Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@orbit/record-cache

Package Overview
Dependencies
Maintainers
1
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@orbit/record-cache - npm Package Compare versions

Comparing version 0.16.0-beta.4 to 0.16.0-beta.5

34

dist/commonjs/es2017/operators/async-inverse-patch-operators.js

@@ -53,14 +53,26 @@ 'use strict';

Object.keys(replacement.relationships).forEach(field => {
let currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
let data = (0, _utils.deepGet)(replacement, ['relationships', field, 'data']);
let relationshipMatch;
if ((0, _utils.isArray)(data)) {
relationshipMatch = (0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipMatch = (0, _data.equalRecordIdentities)(currentData, data);
if (data !== undefined) {
let currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
let relationshipChanged;
if ((0, _utils.isArray)(data)) {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentities)(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -167,2 +179,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsImFkZFJlY29yZCIsImNhY2hlIiwib3AiLCJ0eXBlIiwiaWQiLCJyZWNvcmQiLCJjdXJyZW50IiwiZ2V0UmVjb3JkQXN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwiZmllbGQiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJjdXJyZW50RGF0YSIsImRhdGEiLCJyZWxhdGlvbnNoaXBNYXRjaCIsInJlbW92ZVJlY29yZCIsInJlcGxhY2VLZXkiLCJrZXkiLCJyZXBsYWNlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWRkVG9SZWxhdGVkUmVjb3JkcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJnZXRSZWxhdGVkUmVjb3Jkc0FzeW5jIiwicmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzIiwicmVwbGFjZVJlbGF0ZWRSZWNvcmRzIiwicmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkIiwiZ2V0UmVsYXRlZFJlY29yZEFzeW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ08sTUFBTUEsa0VBQTZCO0FBQ3RDLFVBQU1DLFNBQU4sQ0FBZ0JDLEtBQWhCLEVBQXVCQyxFQUF2QixFQUEyQjtBQUN2QixjQUFNLEVBQUVDLElBQUYsRUFBUUMsRUFBUixLQUFlRixHQUFHRyxNQUF4QjtBQUNBLGNBQU1DLFVBQVUsTUFBTUwsTUFBTU0sY0FBTixDQUFxQkwsR0FBR0csTUFBeEIsQ0FBdEI7QUFDQSxZQUFJQyxPQUFKLEVBQWE7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TSxFQUFFRyxNQUFGLEVBQVV5QixZQUFWLEVBQXdCTSxjQUF4QixLQUEyQ2xDLEVBQWpEO0FBQ0EsY0FBTThCLHdCQUF3QixNQUFNL0IsTUFBTWdDLHNCQUFOLENBQTZCNUIsTUFBN0IsRUFBcUN5QixZQUFyQyxDQUFwQztBQUNBLFlBQUlFLDBCQUEwQmIsU0FBMUIsSUFBdUMsQ0FBQyxtQ0FBd0JhLHFCQUF4QixFQUErQ0ksY0FBL0MsQ0FBNUMsRUFBNEc7QUFDeEcsbUJBQU87QUFDSGxDLG9CQUFJLHVCQUREO0FBRUhHLHNCQUZHO0FBR0h5Qiw0QkFIRztBQUlITSxnQ0FBZ0JKLHlCQUF5QjtBQUp0QyxhQUFQO0FBTUg7QUFDSixLQTVJcUM7QUE2SXRDLFVBQU1LLG9CQUFOLENBQTJCcEMsS0FBM0IsRUFBa0NDLEVBQWxDLEVBQXNDO0FBQ2xDLGNBQU0sRUFBRUcsTUFBRixFQUFVeUIsWUFBVixFQUF3QkMsYUFBeEIsS0FBMEM3QixFQUFoRDtBQUNBLGNBQU1vQyx1QkFBdUIsTUFBTXJDLE1BQU1zQyxxQkFBTixDQUE0QmxDLE1BQTVCLEVBQW9DeUIsWUFBcEMsQ0FBbkM7QUFDQSxZQUFJUSx5QkFBeUJuQixTQUF6QixJQUFzQyxDQUFDLGlDQUFzQm1CLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhHLHNCQUZHO0FBR0h5Qiw0QkFIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBeEpxQyxDQUFuQyIsImZpbGUiOiJvcGVyYXRvcnMvYXN5bmMtaW52ZXJzZS1wYXRjaC1vcGVyYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWVwR2V0LCBkZWVwU2V0LCBlcSwgaXNBcnJheSB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBlcXVhbFJlY29yZElkZW50aXRpZXMsIGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzLCByZWNvcmRzSW5jbHVkZSB9IGZyb20gJ0BvcmJpdC9kYXRhJztcbmV4cG9ydCBjb25zdCBBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhc3luYyBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gb3AucmVjb3JkO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHR5cGUsIGlkIH07XG4gICAgICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgWydhdHRyaWJ1dGVzJywgJ2tleXMnXS5mb3JFYWNoKGdyb3VwaW5nID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRbZ3JvdXBpbmddKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXBsYWNlbWVudFtncm91cGluZ11bZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRlZXBHZXQoY3VycmVudCwgW2dyb3VwaW5nLCBmaWVsZF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcSh2YWx1ZSwgY3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbZ3JvdXBpbmcsIGZpZWxkXSwgY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWVwR2V0KHJlcGxhY2VtZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBNYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcE1hdGNoID0gZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwTWF0Y2ggPSBlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVsYXRpb25zaGlwTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddLCBjdXJyZW50RGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlS2V5KGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGtleSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsna2V5cycsIGtleV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VLZXknLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZUF0dHJpYnV0ZShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGUgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc0FzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFyZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzICE9PSB1bmRlZmluZWQgJiYgcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFRvUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkcyB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnRSZWxhdGVkUmVjb3JkLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmQ6IGN1cnJlbnRSZWxhdGVkUmVjb3JkIHx8IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsImFkZFJlY29yZCIsImNhY2hlIiwib3AiLCJ0eXBlIiwiaWQiLCJyZWNvcmQiLCJjdXJyZW50IiwiZ2V0UmVjb3JkQXN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwiZmllbGQiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJkYXRhIiwiY3VycmVudERhdGEiLCJyZWxhdGlvbnNoaXBDaGFuZ2VkIiwicmVtb3ZlUmVjb3JkIiwicmVwbGFjZUtleSIsImtleSIsInJlcGxhY2VBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJhZGRUb1JlbGF0ZWRSZWNvcmRzIiwicmVsYXRpb25zaGlwIiwicmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkcyIsImdldFJlbGF0ZWRSZWNvcmRzQXN5bmMiLCJyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZHMiLCJyZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkIiwiY3VycmVudFJlbGF0ZWRSZWNvcmQiLCJnZXRSZWxhdGVkUmVjb3JkQXN5bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDTyxNQUFNQSxrRUFBNkI7QUFDdEMsVUFBTUMsU0FBTixDQUFnQkMsS0FBaEIsRUFBdUJDLEVBQXZCLEVBQTJCO0FBQ3ZCLGNBQU0sRUFBRUMsSUFBRixFQUFRQyxFQUFSLEtBQWVGLEdBQUdHLE1BQXhCO0FBQ0EsY0FBTUMsVUFBVSxNQUFNTCxNQUFNTSxjQUFOLENBQXFCTCxHQUFHRyxNQUF4QixDQUF0QjtBQUNBLFlBQUlDLE9BQUosRUFB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LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVlcEdldCwgZGVlcFNldCwgZXEsIGlzQXJyYXkgfSBmcm9tICdAb3JiaXQvdXRpbHMnO1xuaW1wb3J0IHsgZXF1YWxSZWNvcmRJZGVudGl0aWVzLCBlcXVhbFJlY29yZElkZW50aXR5U2V0cywgcmVjb3Jkc0luY2x1ZGUgfSBmcm9tICdAb3JiaXQvZGF0YSc7XG5leHBvcnQgY29uc3QgQXN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYXN5bmMgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgaWYgKGVxKGN1cnJlbnQsIG9wLnJlY29yZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wOiAndXBkYXRlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyB1cGRhdGVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0geyB0eXBlLCBpZCB9O1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIFsnYXR0cmlidXRlcycsICdrZXlzJ10uZm9yRWFjaChncm91cGluZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudFtncm91cGluZ10pLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVwbGFjZW1lbnRbZ3JvdXBpbmddW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkZWVwR2V0KGN1cnJlbnQsIFtncm91cGluZywgZmllbGRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXEodmFsdWUsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgW2dyb3VwaW5nLCBmaWVsZF0sIGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWVwR2V0KHJlcGxhY2VtZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50RGF0YSA9IGRlZXBHZXQoY3VycmVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aW9uc2hpcENoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gIWVxdWFsUmVjb3JkSWRlbnRpdGllcyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSwgY3VycmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wOiAndXBkYXRlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZXN1bHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VLZXkoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY2FjaGUuZ2V0UmVjb3JkQXN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydrZXlzJywga2V5XSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUtleScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlQXR0cmlidXRlKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsnYXR0cmlidXRlcycsIGF0dHJpYnV0ZV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VBdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgYWRkVG9SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIXJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgIT09IHVuZGVmaW5lZCAmJiByZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkVG9SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmRzIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZHM6IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyB8fCBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZVJlbGF0ZWRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZCA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudFJlbGF0ZWRSZWNvcmQsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZDogY3VycmVudFJlbGF0ZWRSZWNvcmQgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07Il19

@@ -53,14 +53,26 @@ 'use strict';

Object.keys(replacement.relationships).forEach(field => {
let currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
let data = (0, _utils.deepGet)(replacement, ['relationships', field, 'data']);
let relationshipMatch;
if ((0, _utils.isArray)(data)) {
relationshipMatch = (0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipMatch = (0, _data.equalRecordIdentities)(currentData, data);
if (data !== undefined) {
let currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
let relationshipChanged;
if ((0, _utils.isArray)(data)) {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentities)(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -167,2 +179,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJhZGRSZWNvcmQiLCJjYWNoZSIsIm9wIiwidHlwZSIsImlkIiwicmVjb3JkIiwiY3VycmVudCIsImdldFJlY29yZFN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwiZmllbGQiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJjdXJyZW50RGF0YSIsImRhdGEiLCJyZWxhdGlvbnNoaXBNYXRjaCIsInJlbW92ZVJlY29yZCIsInJlcGxhY2VLZXkiLCJrZXkiLCJyZXBsYWNlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWRkVG9SZWxhdGVkUmVjb3JkcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJnZXRSZWxhdGVkUmVjb3Jkc1N5bmMiLCJyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZHMiLCJyZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkIiwiY3VycmVudFJlbGF0ZWRSZWNvcmQiLCJnZXRSZWxhdGVkUmVjb3JkU3luYyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNPLE1BQU1BLGdFQUE0QjtBQUNyQ0MsY0FBVUMsS0FBVixFQUFpQkMsRUFBakIsRUFBcUI7QUFDakIsY0FBTSxFQUFFQyxJQUFGLEVBQVFDLEVBQVIsS0FBZUYsR0FBR0csTUFBeEI7QUFDQSxjQUFNQyxVQUFVTCxNQUFNTSxhQUFOLENBQW9CTCxHQUFHRyxNQUF2QixDQUFoQjtBQUNBLFlBQUlDLE9BQUosRUFBYTtBQUNULGdCQUFJLGVBQUdBLE9BQUgs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SUUsMEJBQTBCYixTQUExQixJQUF1QyxDQUFDLG1DQUF3QmEscUJBQXhCLEVBQStDSSxjQUEvQyxDQUE1QyxFQUE0RztBQUN4RyxtQkFBTztBQUNIbEMsb0JBQUksdUJBREQ7QUFFSEcsc0JBRkc7QUFHSHlCLDRCQUhHO0FBSUhNLGdDQUFnQkoseUJBQXlCO0FBSnRDLGFBQVA7QUFNSDtBQUNKLEtBNUlvQztBQTZJckNLLHlCQUFxQnBDLEtBQXJCLEVBQTRCQyxFQUE1QixFQUFnQztBQUM1QixjQUFNLEVBQUVHLE1BQUYsRUFBVXlCLFlBQVYsRUFBd0JDLGFBQXhCLEtBQTBDN0IsRUFBaEQ7QUFDQSxjQUFNb0MsdUJBQXVCckMsTUFBTXNDLG9CQUFOLENBQTJCbEMsTUFBM0IsRUFBbUN5QixZQUFuQyxDQUE3QjtBQUNBLFlBQUlRLHlCQUF5Qm5CLFNBQXpCLElBQXNDLENBQUMsaUNBQXNCbUIsb0JBQXRCLEVBQTRDUCxhQUE1QyxDQUEzQyxFQUF1RztBQUNuRyxtQkFBTztBQUNIN0Isb0JBQUksc0JBREQ7QUFFSEcsc0JBRkc7QUFHSHlCLDRCQUhHO0FBSUhDLCtCQUFlTyx3QkFBd0I7QUFKcEMsYUFBUDtBQU1IO0FBQ0o7QUF4Sm9DLENBQWxDIiwiZmlsZSI6Im9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVlcEdldCwgZGVlcFNldCwgZXEsIGlzQXJyYXkgfSBmcm9tICdAb3JiaXQvdXRpbHMnO1xuaW1wb3J0IHsgZXF1YWxSZWNvcmRJZGVudGl0aWVzLCBlcXVhbFJlY29yZElkZW50aXR5U2V0cywgcmVjb3Jkc0luY2x1ZGUgfSBmcm9tICdAb3JiaXQvZGF0YSc7XG5leHBvcnQgY29uc3QgU3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChlcShjdXJyZW50LCBvcC5yZWNvcmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogY3VycmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0geyB0eXBlLCBpZCB9O1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIFsnYXR0cmlidXRlcycsICdrZXlzJ10uZm9yRWFjaChncm91cGluZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudFtncm91cGluZ10pLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVwbGFjZW1lbnRbZ3JvdXBpbmddW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkZWVwR2V0KGN1cnJlbnQsIFtncm91cGluZywgZmllbGRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXEodmFsdWUsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgW2dyb3VwaW5nLCBmaWVsZF0sIGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnREYXRhID0gZGVlcEdldChjdXJyZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGVlcEdldChyZXBsYWNlbWVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVsYXRpb25zaGlwTWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBNYXRjaCA9IGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcE1hdGNoID0gZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSwgY3VycmVudERhdGEgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlc3VsdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlS2V5KGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGtleSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydrZXlzJywga2V5XSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUtleScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlQXR0cmlidXRlKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydhdHRyaWJ1dGVzJywgYXR0cmlidXRlXSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUF0dHJpYnV0ZScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZGRUb1JlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFyZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgIT09IHVuZGVmaW5lZCAmJiByZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkVG9SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmRzIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkczogY3VycmVudFJlbGF0ZWRSZWNvcmRzIHx8IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlUmVsYXRlZFJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZFN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnRSZWxhdGVkUmVjb3JkLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmQ6IGN1cnJlbnRSZWxhdGVkUmVjb3JkIHx8IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJhZGRSZWNvcmQiLCJjYWNoZSIsIm9wIiwidHlwZSIsImlkIiwicmVjb3JkIiwiY3VycmVudCIsImdldFJlY29yZFN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwiZmllbGQiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJkYXRhIiwiY3VycmVudERhdGEiLCJyZWxhdGlvbnNoaXBDaGFuZ2VkIiwicmVtb3ZlUmVjb3JkIiwicmVwbGFjZUtleSIsImtleSIsInJlcGxhY2VBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJhZGRUb1JlbGF0ZWRSZWNvcmRzIiwicmVsYXRpb25zaGlwIiwicmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkcyIsImdldFJlbGF0ZWRSZWNvcmRzU3luYyIsInJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkcyIsInJlbGF0ZWRSZWNvcmRzIiwicmVwbGFjZVJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZCIsImdldFJlbGF0ZWRSZWNvcmRTeW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ08sTUFBTUEsZ0VBQTRCO0FBQ3JDQyxjQUFVQyxLQUFWLEVBQWlCQyxFQUFqQixFQUFxQjtBQUNqQixjQUFNLEVBQUVDLElBQUYsRUFBUUMsRUFBUixLQUFlRixHQUFHRyxNQUF4QjtBQUNBLGNBQU1DLFVBQVVMLE1BQU1NLGFBQU4sQ0FBb0JMLEdBQUdHLE1BQXZCLENBQWhCO0FBQ0EsWUFBSUMsT0FBSixFQUFhO0FBQ1QsZ0JBQUksZUFBR0EsT0FB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LDBCQUFzQmxDLEtBQXRCLEVBQTZCQyxFQUE3QixFQUFpQztBQUM3QixjQUFNLEVBQUVHLE1BQUYsRUFBVXlCLFlBQVYsRUFBd0JNLGNBQXhCLEtBQTJDbEMsRUFBakQ7QUFDQSxjQUFNOEIsd0JBQXdCL0IsTUFBTWdDLHFCQUFOLENBQTRCNUIsTUFBNUIsRUFBb0N5QixZQUFwQyxDQUE5QjtBQUNBLFlBQUlFLDBCQUEwQmIsU0FBMUIsSUFBdUMsQ0FBQyxtQ0FBd0JhLHFCQUF4QixFQUErQ0ksY0FBL0MsQ0FBNUMsRUFBNEc7QUFDeEcsbUJBQU87QUFDSGxDLG9CQUFJLHVCQUREO0FBRUhHLHNCQUZHO0FBR0h5Qiw0QkFIRztBQUlITSxnQ0FBZ0JKLHlCQUF5QjtBQUp0QyxhQUFQO0FBTUg7QUFDSixLQXhKb0M7QUF5SnJDSyx5QkFBcUJwQyxLQUFyQixFQUE0QkMsRUFBNUIsRUFBZ0M7QUFDNUIsY0FBTSxFQUFFRyxNQUFGLEVBQVV5QixZQUFWLEVBQXdCQyxhQUF4QixLQUEwQzdCLEVBQWhEO0FBQ0EsY0FBTW9DLHVCQUF1QnJDLE1BQU1zQyxvQkFBTixDQUEyQmxDLE1BQTNCLEVBQW1DeUIsWUFBbkMsQ0FBN0I7QUFDQSxZQUFJUSx5QkFBeUJuQixTQUF6QixJQUFzQyxDQUFDLGlDQUFzQm1CLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhHLHNCQUZHO0FBR0h5Qiw0QkFIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBcEtvQyxDQUFsQyIsImZpbGUiOiJvcGVyYXRvcnMvc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBHZXQsIGRlZXBTZXQsIGVxLCBpc0FycmF5IH0gZnJvbSAnQG9yYml0L3V0aWxzJztcbmltcG9ydCB7IGVxdWFsUmVjb3JkSWRlbnRpdGllcywgZXF1YWxSZWNvcmRJZGVudGl0eVNldHMsIHJlY29yZHNJbmNsdWRlIH0gZnJvbSAnQG9yYml0L2RhdGEnO1xuZXhwb3J0IGNvbnN0IFN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHJlcGxhY2VtZW50O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfTtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBbJ2F0dHJpYnV0ZXMnLCAna2V5cyddLmZvckVhY2goZ3JvdXBpbmcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFtncm91cGluZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRbZ3JvdXBpbmddKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcGxhY2VtZW50W2dyb3VwaW5nXVtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZGVlcEdldChjdXJyZW50LCBbZ3JvdXBpbmcsIGZpZWxkXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVxKHZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFtncm91cGluZywgZmllbGRdLCBjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGVlcEdldChyZXBsYWNlbWVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBDaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10sIGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VLZXkoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2tleXMnLCBrZXldKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlS2V5JyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VBdHRyaWJ1dGUoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlIH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIXJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyAhPT0gdW5kZWZpbmVkICYmIHJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRUb1JlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZHMgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZCA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudFJlbGF0ZWRSZWNvcmQsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZDogY3VycmVudFJlbGF0ZWRSZWNvcmQgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07Il19

@@ -58,14 +58,26 @@ 'use strict';

Object.keys(replacement.relationships).forEach(function (field) {
var currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
var data = (0, _utils.deepGet)(replacement, ['relationships', field, 'data']);
var relationshipMatch = void 0;
if ((0, _utils.isArray)(data)) {
relationshipMatch = (0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipMatch = (0, _data.equalRecordIdentities)(currentData, data);
if (data !== undefined) {
var currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
var relationshipChanged = void 0;
if ((0, _utils.isArray)(data)) {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentities)(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -192,2 +204,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsIm9wIiwiY3VycmVudCIsImNhY2hlIiwiZXEiLCJyZWNvcmQiLCJ0eXBlIiwiaWQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJPYmplY3QiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsImRlZXBHZXQiLCJkZWVwU2V0IiwiY3VycmVudERhdGEiLCJkYXRhIiwicmVsYXRpb25zaGlwTWF0Y2giLCJpc0FycmF5IiwiZXF1YWxSZWNvcmRJZGVudGl0eVNldHMiLCJlcXVhbFJlY29yZElkZW50aXRpZXMiLCJrZXkiLCJhdHRyaWJ1dGUiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJyZWNvcmRzSW5jbHVkZSIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJyZWxhdGVkUmVjb3JkcyIsImN1cnJlbnRSZWxhdGVkUmVjb3JkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDTyxJQUFNQSxrRUFBNkI7QUFBQSxlQUFBLGdCQUFBLEtBQUEsRUFBQSxFQUFBLEVBQ1g7QUFBQSxZQUFBLGFBQ0ZDLEdBREUsTUFBQTtBQUFBLFlBQUEsT0FBQSxXQUFBLElBQUE7QUFBQSxZQUFBLEtBQUEsV0FBQSxFQUFBOztBQUV2QixZQUFNQyxVQUFVLE1BQU1DLE1BQUFBLGNBQUFBLENBQXFCRixHQUEzQyxNQUFzQkUsQ0FBdEI7QUFDQSxZQUFBLE9BQUEsRUFBYTtBQUNULGdCQUFJQyxlQUFBQSxPQUFBQSxFQUFZSCxHQUFoQixNQUFJRyxDQUFKLEVBQTRCO0FBQ3hCO0FBREosYUFBQSxNQUVPO0FBQ0gsdUJBQU87QUFDSEgsd0JBREcsY0FBQTtBQUVISSw0QkFBUUg7QUFGTCxpQkFBUDtBQUlIO0FBUkwsU0FBQSxNQVNPO0FBQ0gsbUJBQU87QUFDSEQsb0JBREcsY0FBQTtBQUVISSx3QkFBUSxF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QUFBQSxZQUFBLGlCQUFBLEdBQUEsY0FBQTs7QUFFbkMsWUFBTUgsd0JBQXdCLE1BQU1yQixNQUFBQSxzQkFBQUEsQ0FBQUEsTUFBQUEsRUFBcEMsWUFBb0NBLENBQXBDO0FBQ0EsWUFBSXFCLDBCQUFBQSxTQUFBQSxJQUF1QyxDQUFDSixtQ0FBQUEscUJBQUFBLEVBQTVDLGNBQTRDQSxDQUE1QyxFQUE0RztBQUN4RyxtQkFBTztBQUNIbkIsb0JBREcsdUJBQUE7QUFFSEksd0JBRkcsTUFBQTtBQUdIcUIsOEJBSEcsWUFBQTtBQUlIRSxnQ0FBZ0JKLHlCQUF5QjtBQUp0QyxhQUFQO0FBTUg7QUEzSWlDLEtBQUE7QUFBQSwwQkFBQSxnQkFBQSxLQUFBLEVBQUEsRUFBQSxFQTZJQTtBQUFBLFlBQUEsU0FBQSxHQUFBLE1BQUE7QUFBQSxZQUFBLGVBQUEsR0FBQSxZQUFBO0FBQUEsWUFBQSxnQkFBQSxHQUFBLGFBQUE7O0FBRWxDLFlBQU1LLHVCQUF1QixNQUFNMUIsTUFBQUEscUJBQUFBLENBQUFBLE1BQUFBLEVBQW5DLFlBQW1DQSxDQUFuQztBQUNBLFlBQUkwQix5QkFBQUEsU0FBQUEsSUFBc0MsQ0FBQ1IsaUNBQUFBLG9CQUFBQSxFQUEzQyxhQUEyQ0EsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSHBCLG9CQURHLHNCQUFBO0FBRUhJLHdCQUZHLE1BQUE7QUFHSHFCLDhCQUhHLFlBQUE7QUFJSEMsK0JBQWVFLHdCQUF3QjtBQUpwQyxhQUFQO0FBTUg7QUFDSjtBQXhKcUMsQ0FBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWVwR2V0LCBkZWVwU2V0LCBlcSwgaXNBcnJheSB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBlcXVhbFJlY29yZElkZW50aXRpZXMsIGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzLCByZWNvcmRzSW5jbHVkZSB9IGZyb20gJ0BvcmJpdC9kYXRhJztcbmV4cG9ydCBjb25zdCBBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhc3luYyBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gb3AucmVjb3JkO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHR5cGUsIGlkIH07XG4gICAgICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgWydhdHRyaWJ1dGVzJywgJ2tleXMnXS5mb3JFYWNoKGdyb3VwaW5nID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRbZ3JvdXBpbmddKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXBsYWNlbWVudFtncm91cGluZ11bZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRlZXBHZXQoY3VycmVudCwgW2dyb3VwaW5nLCBmaWVsZF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcSh2YWx1ZSwgY3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbZ3JvdXBpbmcsIGZpZWxkXSwgY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWVwR2V0KHJlcGxhY2VtZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBNYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcE1hdGNoID0gZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwTWF0Y2ggPSBlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVsYXRpb25zaGlwTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddLCBjdXJyZW50RGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlS2V5KGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGtleSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsna2V5cycsIGtleV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VLZXknLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZUF0dHJpYnV0ZShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGUgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc0FzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFyZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzICE9PSB1bmRlZmluZWQgJiYgcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFRvUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkcyB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnRSZWxhdGVkUmVjb3JkLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmQ6IGN1cnJlbnRSZWxhdGVkUmVjb3JkIHx8IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsIm9wIiwiY3VycmVudCIsImNhY2hlIiwiZXEiLCJyZWNvcmQiLCJ0eXBlIiwiaWQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJPYmplY3QiLCJ2YWx1ZSIsImN1cnJlbnRWYWx1ZSIsImRlZXBHZXQiLCJkZWVwU2V0IiwiZGF0YSIsImN1cnJlbnREYXRhIiwicmVsYXRpb25zaGlwQ2hhbmdlZCIsImlzQXJyYXkiLCJlcXVhbFJlY29yZElkZW50aXR5U2V0cyIsImVxdWFsUmVjb3JkSWRlbnRpdGllcyIsImtleSIsImF0dHJpYnV0ZSIsImN1cnJlbnRSZWxhdGVkUmVjb3JkcyIsInJlY29yZHNJbmNsdWRlIiwicmVsYXRpb25zaGlwIiwicmVsYXRlZFJlY29yZCIsInJlbGF0ZWRSZWNvcmRzIiwiY3VycmVudFJlbGF0ZWRSZWNvcmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUNBOztBQUNPLElBQU1BLGtFQUE2QjtBQUFBLGVBQUEsZ0JBQUEsS0FBQSxFQUFBLEVBQUEsRUFDWDtBQUFBLFlBQUEsYUFDRkMsR0FERSxNQUFBO0FBQUEsWUFBQSxPQUFBLFdBQUEsSUFBQTtBQUFBLFlBQUEsS0FBQSxXQUFBLEVBQUE7O0FBRXZCLFlBQU1DLFVBQVUsTUFBTUMsTUFBQUEsY0FBQUEsQ0FBcUJGLEdBQTNDLE1BQXNCRSxDQUF0QjtBQUNBLFlBQUEsT0FBQSxFQUFhO0FBQ1QsZ0JBQUlDLGVBQUFBLE9BQUFBLEVBQVlILEdBQWhCLE1BQUlHLENBQUosRUFBNEI7QUFDeEI7QUFESixhQUFBLE1BRU87QUFDSCx1QkFBTztBQUNISCx3QkFERyxjQUFBO0FBRUhJLDRCQUFRSDtBQUZMLGlCQUFQO0FBSUg7QUFSTCxTQUFBLE1BU087QUFDSCxtQkFBTztBQUNIRCxvQkFERyxjQUFBO0FBRUhJLHdCQUFR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fSBmcm9tICdAb3JiaXQvdXRpbHMnO1xuaW1wb3J0IHsgZXF1YWxSZWNvcmRJZGVudGl0aWVzLCBlcXVhbFJlY29yZElkZW50aXR5U2V0cywgcmVjb3Jkc0luY2x1ZGUgfSBmcm9tICdAb3JiaXQvZGF0YSc7XG5leHBvcnQgY29uc3QgQXN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYXN5bmMgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgaWYgKGVxKGN1cnJlbnQsIG9wLnJlY29yZCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wOiAndXBkYXRlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyB1cGRhdGVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0geyB0eXBlLCBpZCB9O1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIFsnYXR0cmlidXRlcycsICdrZXlzJ10uZm9yRWFjaChncm91cGluZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudFtncm91cGluZ10pLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVwbGFjZW1lbnRbZ3JvdXBpbmddW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkZWVwR2V0KGN1cnJlbnQsIFtncm91cGluZywgZmllbGRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXEodmFsdWUsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgW2dyb3VwaW5nLCBmaWVsZF0sIGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWVwR2V0KHJlcGxhY2VtZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50RGF0YSA9IGRlZXBHZXQoY3VycmVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aW9uc2hpcENoYW5nZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gIWVxdWFsUmVjb3JkSWRlbnRpdGllcyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVsYXRpb25zaGlwQ2hhbmdlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSwgY3VycmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wOiAndXBkYXRlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZXN1bHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VLZXkoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY2FjaGUuZ2V0UmVjb3JkQXN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydrZXlzJywga2V5XSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUtleScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlQXR0cmlidXRlKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsnYXR0cmlidXRlcycsIGF0dHJpYnV0ZV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VBdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgYWRkVG9SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIXJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgIT09IHVuZGVmaW5lZCAmJiByZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkVG9SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmRzIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZHM6IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyB8fCBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZVJlbGF0ZWRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZCA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudFJlbGF0ZWRSZWNvcmQsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZDogY3VycmVudFJlbGF0ZWRSZWNvcmQgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07Il19

@@ -58,14 +58,26 @@ 'use strict';

Object.keys(replacement.relationships).forEach(function (field) {
var currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
var data = (0, _utils.deepGet)(replacement, ['relationships', field, 'data']);
var relationshipMatch = void 0;
if ((0, _utils.isArray)(data)) {
relationshipMatch = (0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipMatch = (0, _data.equalRecordIdentities)(currentData, data);
if (data !== undefined) {
var currentData = (0, _utils.deepGet)(current, ['relationships', field, 'data']);
var relationshipChanged = void 0;
if ((0, _utils.isArray)(data)) {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentitySets)(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !(0, _data.equalRecordIdentities)(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
(0, _utils.deepSet)(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -192,2 +204,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJvcCIsImN1cnJlbnQiLCJjYWNoZSIsImVxIiwicmVjb3JkIiwidHlwZSIsImlkIiwicmVwbGFjZW1lbnQiLCJyZXN1bHQiLCJjaGFuZ2VkIiwiT2JqZWN0IiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWVwR2V0IiwiZGVlcFNldCIsImN1cnJlbnREYXRhIiwiZGF0YSIsInJlbGF0aW9uc2hpcE1hdGNoIiwiaXNBcnJheSIsImVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzIiwiZXF1YWxSZWNvcmRJZGVudGl0aWVzIiwia2V5IiwiYXR0cmlidXRlIiwiY3VycmVudFJlbGF0ZWRSZWNvcmRzIiwicmVjb3Jkc0luY2x1ZGUiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGVkUmVjb3JkIiwicmVsYXRlZFJlY29yZHMiLCJjdXJyZW50UmVsYXRlZFJlY29yZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0E7O0FBQ08sSUFBTUEsZ0VBQTRCO0FBQUEsZUFBQSxVQUFBLEtBQUEsRUFBQSxFQUFBLEVBQ2hCO0FBQUEsWUFBQSxhQUNJQyxHQURKLE1BQUE7QUFBQSxZQUFBLE9BQUEsV0FBQSxJQUFBO0FBQUEsWUFBQSxLQUFBLFdBQUEsRUFBQTs7QUFFakIsWUFBTUMsVUFBVUMsTUFBQUEsYUFBQUEsQ0FBb0JGLEdBQXBDLE1BQWdCRSxDQUFoQjtBQUNBLFlBQUEsT0FBQSxFQUFhO0FBQ1QsZ0JBQUlDLGVBQUFBLE9BQUFBLEVBQVlILEdBQWhCLE1BQUlHLENBQUosRUFBNEI7QUFDeEI7QUFESixhQUFBLE1BRU87QUFDSCx1QkFBTztBQUNISCx3QkFERyxjQUFBO0FBRUhJLDRCQUFRSDtBQUZMLGlCQUFQO0FBSUg7QUFSTCxTQUFBLE1BU087QUFDSCxtQkFBTztBQUNIRCxvQkFERyxjQUFBO0FBRUhJLHdCQUFRLEVBQUVDLE1B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TUFBQUEscUJBQUFBLENBQUFBLE1BQUFBLEVBQTlCLFlBQThCQSxDQUE5QjtBQUNBLFlBQUlxQiwwQkFBQUEsU0FBQUEsSUFBdUMsQ0FBQ0osbUNBQUFBLHFCQUFBQSxFQUE1QyxjQUE0Q0EsQ0FBNUMsRUFBNEc7QUFDeEcsbUJBQU87QUFDSG5CLG9CQURHLHVCQUFBO0FBRUhJLHdCQUZHLE1BQUE7QUFHSHFCLDhCQUhHLFlBQUE7QUFJSEUsZ0NBQWdCSix5QkFBeUI7QUFKdEMsYUFBUDtBQU1IO0FBM0lnQyxLQUFBO0FBQUEsMEJBQUEsVUFBQSxLQUFBLEVBQUEsRUFBQSxFQTZJTDtBQUFBLFlBQUEsU0FBQSxHQUFBLE1BQUE7QUFBQSxZQUFBLGVBQUEsR0FBQSxZQUFBO0FBQUEsWUFBQSxnQkFBQSxHQUFBLGFBQUE7O0FBRTVCLFlBQU1LLHVCQUF1QjFCLE1BQUFBLG9CQUFBQSxDQUFBQSxNQUFBQSxFQUE3QixZQUE2QkEsQ0FBN0I7QUFDQSxZQUFJMEIseUJBQUFBLFNBQUFBLElBQXNDLENBQUNSLGlDQUFBQSxvQkFBQUEsRUFBM0MsYUFBMkNBLENBQTNDLEVBQXVHO0FBQ25HLG1CQUFPO0FBQ0hwQixvQkFERyxzQkFBQTtBQUVISSx3QkFGRyxNQUFBO0FBR0hxQiw4QkFIRyxZQUFBO0FBSUhDLCtCQUFlRSx3QkFBd0I7QUFKcEMsYUFBUDtBQU1IO0FBQ0o7QUF4Sm9DLENBQWxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVlcEdldCwgZGVlcFNldCwgZXEsIGlzQXJyYXkgfSBmcm9tICdAb3JiaXQvdXRpbHMnO1xuaW1wb3J0IHsgZXF1YWxSZWNvcmRJZGVudGl0aWVzLCBlcXVhbFJlY29yZElkZW50aXR5U2V0cywgcmVjb3Jkc0luY2x1ZGUgfSBmcm9tICdAb3JiaXQvZGF0YSc7XG5leHBvcnQgY29uc3QgU3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmIChlcShjdXJyZW50LCBvcC5yZWNvcmQpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogY3VycmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgdXBkYXRlUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gcmVwbGFjZW1lbnQ7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0geyB0eXBlLCBpZCB9O1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIFsnYXR0cmlidXRlcycsICdrZXlzJ10uZm9yRWFjaChncm91cGluZyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkge1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudFtncm91cGluZ10pLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gcmVwbGFjZW1lbnRbZ3JvdXBpbmddW2ZpZWxkXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50VmFsdWUgPSBkZWVwR2V0KGN1cnJlbnQsIFtncm91cGluZywgZmllbGRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZXEodmFsdWUsIGN1cnJlbnRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgW2dyb3VwaW5nLCBmaWVsZF0sIGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnREYXRhID0gZGVlcEdldChjdXJyZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGVlcEdldChyZXBsYWNlbWVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVsYXRpb25zaGlwTWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBNYXRjaCA9IGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcE1hdGNoID0gZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlbGF0aW9uc2hpcE1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSwgY3VycmVudERhdGEgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlc3VsdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlS2V5KGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGtleSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydrZXlzJywga2V5XSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUtleScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlQXR0cmlidXRlKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGF0dHJpYnV0ZSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydhdHRyaWJ1dGVzJywgYXR0cmlidXRlXSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUF0dHJpYnV0ZScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZGRUb1JlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFyZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgIT09IHVuZGVmaW5lZCAmJiByZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkVG9SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmRzIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkczogY3VycmVudFJlbGF0ZWRSZWNvcmRzIHx8IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZXBsYWNlUmVsYXRlZFJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZFN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnRSZWxhdGVkUmVjb3JkLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmQ6IGN1cnJlbnRSZWxhdGVkUmVjb3JkIHx8IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJvcCIsImN1cnJlbnQiLCJjYWNoZSIsImVxIiwicmVjb3JkIiwidHlwZSIsImlkIiwicmVwbGFjZW1lbnQiLCJyZXN1bHQiLCJjaGFuZ2VkIiwiT2JqZWN0IiwidmFsdWUiLCJjdXJyZW50VmFsdWUiLCJkZWVwR2V0IiwiZGVlcFNldCIsImRhdGEiLCJjdXJyZW50RGF0YSIsInJlbGF0aW9uc2hpcENoYW5nZWQiLCJpc0FycmF5IiwiZXF1YWxSZWNvcmRJZGVudGl0eVNldHMiLCJlcXVhbFJlY29yZElkZW50aXRpZXMiLCJrZXkiLCJhdHRyaWJ1dGUiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJyZWNvcmRzSW5jbHVkZSIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJyZWxhdGVkUmVjb3JkcyIsImN1cnJlbnRSZWxhdGVkUmVjb3JkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQTs7QUFDTyxJQUFNQSxnRUFBNEI7QUFBQSxlQUFBLFVBQUEsS0FBQSxFQUFBLEVBQUEsRUFDaEI7QUFBQSxZQUFBLGFBQ0lDLEdBREosTUFBQTtBQUFBLFlBQUEsT0FBQSxXQUFBLElBQUE7QUFBQSxZQUFBLEtBQUEsV0FBQSxFQUFBOztBQUVqQixZQUFNQyxVQUFVQyxNQUFBQSxhQUFBQSxDQUFvQkYsR0FBcEMsTUFBZ0JFLENBQWhCO0FBQ0EsWUFBQSxPQUFBLEVBQWE7QUFDVCxnQkFBSUMsZUFBQUEsT0FBQUEsRUFBWUgsR0FBaEIsTUFBSUcsQ0FBSixFQUE0QjtBQUN4QjtBQURKLGFBQUEsTUFFTztBQUNILHVCQUFPO0FBQ0hILHdCQURHLGNBQUE7QUFFSEksNEJBQVFIO0FBRkwsaUJBQVA7QUFJSDtBQVJMLFNBQUEsTUFTTztBQUNILG1CQUFPO0FBQ0hELG9CQURHLGNBQUE7QUFFSEksd0JBQVEsRUFBRUMs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SEMsK0JBQUFBO0FBSkcsYUFBUDtBQU1IO0FBM0lnQyxLQUFBO0FBQUEsMkJBQUEsVUFBQSxLQUFBLEVBQUEsRUFBQSxFQTZJSjtBQUFBLFlBQUEsU0FBQSxHQUFBLE1BQUE7QUFBQSxZQUFBLGVBQUEsR0FBQSxZQUFBO0FBQUEsWUFBQSxpQkFBQSxHQUFBLGNBQUE7O0FBRTdCLFlBQU1ILHdCQUF3QnJCLE1BQUFBLHFCQUFBQSxDQUFBQSxNQUFBQSxFQUE5QixZQUE4QkEsQ0FBOUI7QUFDQSxZQUFJcUIsMEJBQUFBLFNBQUFBLElBQXVDLENBQUNKLG1DQUFBQSxxQkFBQUEsRUFBNUMsY0FBNENBLENBQTVDLEVBQTRHO0FBQ3hHLG1CQUFPO0FBQ0huQixvQkFERyx1QkFBQTtBQUVISSx3QkFGRyxNQUFBO0FBR0hxQiw4QkFIRyxZQUFBO0FBSUhFLGdDQUFnQkoseUJBQXlCO0FBSnRDLGFBQVA7QUFNSDtBQXZKZ0MsS0FBQTtBQUFBLDBCQUFBLFVBQUEsS0FBQSxFQUFBLEVBQUEsRUF5Skw7QUFBQSxZQUFBLFNBQUEsR0FBQSxNQUFBO0FBQUEsWUFBQSxlQUFBLEdBQUEsWUFBQTtBQUFBLFlBQUEsZ0JBQUEsR0FBQSxhQUFBOztBQUU1QixZQUFNSyx1QkFBdUIxQixNQUFBQSxvQkFBQUEsQ0FBQUEsTUFBQUEsRUFBN0IsWUFBNkJBLENBQTdCO0FBQ0EsWUFBSTBCLHlCQUFBQSxTQUFBQSxJQUFzQyxDQUFDUixpQ0FBQUEsb0JBQUFBLEVBQTNDLGFBQTJDQSxDQUEzQyxFQUF1RztBQUNuRyxtQkFBTztBQUNIcEIsb0JBREcsc0JBQUE7QUFFSEksd0JBRkcsTUFBQTtBQUdIcUIsOEJBSEcsWUFBQTtBQUlIQywrQkFBZUUsd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBcEtvQyxDQUFsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBHZXQsIGRlZXBTZXQsIGVxLCBpc0FycmF5IH0gZnJvbSAnQG9yYml0L3V0aWxzJztcbmltcG9ydCB7IGVxdWFsUmVjb3JkSWRlbnRpdGllcywgZXF1YWxSZWNvcmRJZGVudGl0eVNldHMsIHJlY29yZHNJbmNsdWRlIH0gZnJvbSAnQG9yYml0L2RhdGEnO1xuZXhwb3J0IGNvbnN0IFN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHJlcGxhY2VtZW50O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfTtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBbJ2F0dHJpYnV0ZXMnLCAna2V5cyddLmZvckVhY2goZ3JvdXBpbmcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFtncm91cGluZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRbZ3JvdXBpbmddKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcGxhY2VtZW50W2dyb3VwaW5nXVtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZGVlcEdldChjdXJyZW50LCBbZ3JvdXBpbmcsIGZpZWxkXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVxKHZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFtncm91cGluZywgZmllbGRdLCBjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGVlcEdldChyZXBsYWNlbWVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBDaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10sIGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VLZXkoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2tleXMnLCBrZXldKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlS2V5JyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VBdHRyaWJ1dGUoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlIH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIXJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyAhPT0gdW5kZWZpbmVkICYmIHJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRUb1JlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZHMgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZCA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudFJlbGF0ZWRSZWNvcmQsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZDogY3VycmVudFJlbGF0ZWRSZWNvcmQgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07Il19

@@ -44,14 +44,26 @@ import { deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(field => {
let currentData = deepGet(current, ['relationships', field, 'data']);
let data = deepGet(replacement, ['relationships', field, 'data']);
let relationshipMatch;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
if (data !== undefined) {
let currentData = deepGet(current, ['relationships', field, 'data']);
let relationshipChanged;
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -58,0 +70,0 @@ }

@@ -44,14 +44,26 @@ import { deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(field => {
let currentData = deepGet(current, ['relationships', field, 'data']);
let data = deepGet(replacement, ['relationships', field, 'data']);
let relationshipMatch;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
if (data !== undefined) {
let currentData = deepGet(current, ['relationships', field, 'data']);
let relationshipChanged;
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -58,0 +70,0 @@ }

@@ -49,14 +49,26 @@ import { deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(function (field) {
var currentData = deepGet(current, ['relationships', field, 'data']);
var data = deepGet(replacement, ['relationships', field, 'data']);
var relationshipMatch = void 0;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
if (data !== undefined) {
var currentData = deepGet(current, ['relationships', field, 'data']);
var relationshipChanged = void 0;
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -183,2 +195,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJkZWVwR2V0IiwiZGVlcFNldCIsImVxIiwiaXNBcnJheSIsImVxdWFsUmVjb3JkSWRlbnRpdGllcyIsImVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzIiwicmVjb3Jkc0luY2x1ZGUiLCJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsImFkZFJlY29yZCIsImNhY2hlIiwib3AiLCJyZWNvcmQiLCJ0eXBlIiwiaWQiLCJjdXJyZW50IiwiZ2V0UmVjb3JkQXN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwidmFsdWUiLCJmaWVsZCIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJjdXJyZW50RGF0YSIsImRhdGEiLCJyZWxhdGlvbnNoaXBNYXRjaCIsInJlbW92ZVJlY29yZCIsInJlcGxhY2VLZXkiLCJrZXkiLCJyZXBsYWNlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWRkVG9SZWxhdGVkUmVjb3JkcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJnZXRSZWxhdGVkUmVjb3Jkc0FzeW5jIiwicmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzIiwicmVwbGFjZVJlbGF0ZWRSZWNvcmRzIiwicmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkIiwiZ2V0UmVsYXRlZFJlY29yZEFzeW5jIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxPQUFULEVBQWtCQyxPQUFsQixFQUEyQkMsRUFBM0IsRUFBK0JDLE9BQS9CLFFBQThDLGNBQTlDO0FBQ0EsU0FBU0MscUJBQVQsRUFBZ0NDLHVCQUFoQyxFQUF5REMsY0FBekQsUUFB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LHdCQTdJZ0Msa0JBNklYcEMsS0E3SVcsRUE2SUpDLEVBN0lJLEVBNklBO0FBQUEsWUFDMUJDLE1BRDBCLEdBQ2NELEVBRGQsQ0FDMUJDLE1BRDBCO0FBQUEsWUFDbEIyQixZQURrQixHQUNjNUIsRUFEZCxDQUNsQjRCLFlBRGtCO0FBQUEsWUFDSkMsYUFESSxHQUNjN0IsRUFEZCxDQUNKNkIsYUFESTs7QUFFbEMsWUFBTU8sdUJBQXVCLE1BQU1yQyxNQUFNc0MscUJBQU4sQ0FBNEJwQyxNQUE1QixFQUFvQzJCLFlBQXBDLENBQW5DO0FBQ0EsWUFBSVEseUJBQXlCbkIsU0FBekIsSUFBc0MsQ0FBQ3ZCLHNCQUFzQjBDLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhDLDhCQUZHO0FBR0gyQiwwQ0FIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBeEpxQyxDQUFuQyIsImZpbGUiOiJvcGVyYXRvcnMvYXN5bmMtaW52ZXJzZS1wYXRjaC1vcGVyYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWVwR2V0LCBkZWVwU2V0LCBlcSwgaXNBcnJheSB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBlcXVhbFJlY29yZElkZW50aXRpZXMsIGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzLCByZWNvcmRzSW5jbHVkZSB9IGZyb20gJ0BvcmJpdC9kYXRhJztcbmV4cG9ydCBjb25zdCBBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhc3luYyBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gb3AucmVjb3JkO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHR5cGUsIGlkIH07XG4gICAgICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgWydhdHRyaWJ1dGVzJywgJ2tleXMnXS5mb3JFYWNoKGdyb3VwaW5nID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRbZ3JvdXBpbmddKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXBsYWNlbWVudFtncm91cGluZ11bZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRlZXBHZXQoY3VycmVudCwgW2dyb3VwaW5nLCBmaWVsZF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcSh2YWx1ZSwgY3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbZ3JvdXBpbmcsIGZpZWxkXSwgY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBkZWVwR2V0KHJlcGxhY2VtZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBNYXRjaDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcE1hdGNoID0gZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwTWF0Y2ggPSBlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVsYXRpb25zaGlwTWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddLCBjdXJyZW50RGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlS2V5KGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IGtleSB9ID0gb3A7XG4gICAgICAgIGNvbnN0IHJlY29yZCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsna2V5cycsIGtleV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VLZXknLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZUF0dHJpYnV0ZShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGUgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc0FzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFyZWNvcmRzSW5jbHVkZShjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzICE9PSB1bmRlZmluZWQgJiYgcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFRvUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkcyB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGF3YWl0IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkQXN5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmQgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnRSZWxhdGVkUmVjb3JkLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmQ6IGN1cnJlbnRSZWxhdGVkUmVjb3JkIHx8IG51bGxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59OyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9hc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyJdLCJuYW1lcyI6WyJkZWVwR2V0IiwiZGVlcFNldCIsImVxIiwiaXNBcnJheSIsImVxdWFsUmVjb3JkSWRlbnRpdGllcyIsImVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzIiwicmVjb3Jkc0luY2x1ZGUiLCJBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyIsImFkZFJlY29yZCIsImNhY2hlIiwib3AiLCJyZWNvcmQiLCJ0eXBlIiwiaWQiLCJjdXJyZW50IiwiZ2V0UmVjb3JkQXN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwidmFsdWUiLCJmaWVsZCIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJkYXRhIiwiY3VycmVudERhdGEiLCJyZWxhdGlvbnNoaXBDaGFuZ2VkIiwicmVtb3ZlUmVjb3JkIiwicmVwbGFjZUtleSIsImtleSIsInJlcGxhY2VBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJhZGRUb1JlbGF0ZWRSZWNvcmRzIiwicmVsYXRpb25zaGlwIiwicmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkcyIsImdldFJlbGF0ZWRSZWNvcmRzQXN5bmMiLCJyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZHMiLCJyZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkIiwiY3VycmVudFJlbGF0ZWRSZWNvcmQiLCJnZXRSZWxhdGVkUmVjb3JkQXN5bmMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLE9BQVQsRUFBa0JDLE9BQWxCLEVBQTJCQyxFQUEzQixFQUErQkMsT0FBL0IsUUFBOEMsY0FBOUM7QUFDQSxTQUFTQyxxQkFBVCxFQUFnQ0MsdUJBQWhDLEVBQXlEQyxjQUF6RCxR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QUExQixJQUF1QyxDQUFDdEIsd0JBQXdCbUMscUJBQXhCLEVBQStDSSxjQUEvQyxDQUE1QyxFQUE0RztBQUN4RyxtQkFBTztBQUNIbEMsb0JBQUksdUJBREQ7QUFFSEMsOEJBRkc7QUFHSDJCLDBDQUhHO0FBSUhNLGdDQUFnQkoseUJBQXlCO0FBSnRDLGFBQVA7QUFNSDtBQUNKLEtBeEpxQztBQXlKaENLLHdCQXpKZ0Msa0JBeUpYcEMsS0F6SlcsRUF5SkpDLEVBekpJLEVBeUpBO0FBQUEsWUFDMUJDLE1BRDBCLEdBQ2NELEVBRGQsQ0FDMUJDLE1BRDBCO0FBQUEsWUFDbEIyQixZQURrQixHQUNjNUIsRUFEZCxDQUNsQjRCLFlBRGtCO0FBQUEsWUFDSkMsYUFESSxHQUNjN0IsRUFEZCxDQUNKNkIsYUFESTs7QUFFbEMsWUFBTU8sdUJBQXVCLE1BQU1yQyxNQUFNc0MscUJBQU4sQ0FBNEJwQyxNQUE1QixFQUFvQzJCLFlBQXBDLENBQW5DO0FBQ0EsWUFBSVEseUJBQXlCbkIsU0FBekIsSUFBc0MsQ0FBQ3ZCLHNCQUFzQjBDLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhDLDhCQUZHO0FBR0gyQiwwQ0FIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBcEtxQyxDQUFuQyIsImZpbGUiOiJvcGVyYXRvcnMvYXN5bmMtaW52ZXJzZS1wYXRjaC1vcGVyYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWVwR2V0LCBkZWVwU2V0LCBlcSwgaXNBcnJheSB9IGZyb20gJ0BvcmJpdC91dGlscyc7XG5pbXBvcnQgeyBlcXVhbFJlY29yZElkZW50aXRpZXMsIGVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzLCByZWNvcmRzSW5jbHVkZSB9IGZyb20gJ0BvcmJpdC9kYXRhJztcbmV4cG9ydCBjb25zdCBBc3luY0ludmVyc2VQYXRjaE9wZXJhdG9ycyA9IHtcbiAgICBhc3luYyBhZGRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNhY2hlLmdldFJlY29yZEFzeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gb3AucmVjb3JkO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSByZXBsYWNlbWVudDtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSB7IHR5cGUsIGlkIH07XG4gICAgICAgICAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICAgICAgWydhdHRyaWJ1dGVzJywgJ2tleXMnXS5mb3JFYWNoKGdyb3VwaW5nID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnRbZ3JvdXBpbmddKSB7XG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50W2dyb3VwaW5nXSkuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSByZXBsYWNlbWVudFtncm91cGluZ11bZmllbGRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZSA9IGRlZXBHZXQoY3VycmVudCwgW2dyb3VwaW5nLCBmaWVsZF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcSh2YWx1ZSwgY3VycmVudFZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZXBTZXQocmVzdWx0LCBbZ3JvdXBpbmcsIGZpZWxkXSwgY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VycmVudFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcGxhY2VtZW50LnJlbGF0aW9uc2hpcHMpLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGRlZXBHZXQocmVwbGFjZW1lbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnREYXRhID0gZGVlcEdldChjdXJyZW50LCBbJ3JlbGF0aW9uc2hpcHMnLCBmaWVsZCwgJ2RhdGEnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVsYXRpb25zaGlwQ2hhbmdlZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSAhZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSAhZXF1YWxSZWNvcmRJZGVudGl0aWVzKGN1cnJlbnREYXRhLCBkYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBDaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERhdGEgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWxhdGlvbnNoaXBDaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddLCBjdXJyZW50RGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlc3VsdFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVtb3ZlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVtb3ZlUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgY2FjaGUuZ2V0UmVjb3JkQXN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYXN5bmMgcmVwbGFjZUtleShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBrZXkgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBhd2FpdCBjYWNoZS5nZXRSZWNvcmRBc3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2tleXMnLCBrZXldKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlS2V5JyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VBdHRyaWJ1dGUoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlIH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY2FjaGUuZ2V0UmVjb3JkQXN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IHJlY29yZCAmJiBkZWVwR2V0KHJlY29yZCwgWydhdHRyaWJ1dGVzJywgYXR0cmlidXRlXSk7XG4gICAgICAgIGlmICghZXEoY3VycmVudCwgb3AudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZUF0dHJpYnV0ZScsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH0sXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBjdXJyZW50XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyBhZGRUb1JlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNBc3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgPT09IHVuZGVmaW5lZCB8fCAhcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZUZyb21SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc0FzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyAhPT0gdW5kZWZpbmVkICYmIHJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRUb1JlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFzeW5jIHJlcGxhY2VSZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZHMgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBhd2FpdCBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc0FzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50UmVsYXRlZFJlY29yZHMsIHJlbGF0ZWRSZWNvcmRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VSZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkczogY3VycmVudFJlbGF0ZWRSZWNvcmRzIHx8IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhc3luYyByZXBsYWNlUmVsYXRlZFJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkID0gYXdhaXQgY2FjaGUuZ2V0UmVsYXRlZFJlY29yZEFzeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdGllcyhjdXJyZW50UmVsYXRlZFJlY29yZCwgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlUmVsYXRlZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkOiBjdXJyZW50UmVsYXRlZFJlY29yZCB8fCBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufTsiXX0=

@@ -49,14 +49,26 @@ import { deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(function (field) {
var currentData = deepGet(current, ['relationships', field, 'data']);
var data = deepGet(replacement, ['relationships', field, 'data']);
var relationshipMatch = void 0;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
if (data !== undefined) {
var currentData = deepGet(current, ['relationships', field, 'data']);
var relationshipChanged = void 0;
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
}
});

@@ -183,2 +195,2 @@ }

};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbImRlZXBHZXQiLCJkZWVwU2V0IiwiZXEiLCJpc0FycmF5IiwiZXF1YWxSZWNvcmRJZGVudGl0aWVzIiwiZXF1YWxSZWNvcmRJZGVudGl0eVNldHMiLCJyZWNvcmRzSW5jbHVkZSIsIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJhZGRSZWNvcmQiLCJjYWNoZSIsIm9wIiwicmVjb3JkIiwidHlwZSIsImlkIiwiY3VycmVudCIsImdldFJlY29yZFN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwidmFsdWUiLCJmaWVsZCIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJjdXJyZW50RGF0YSIsImRhdGEiLCJyZWxhdGlvbnNoaXBNYXRjaCIsInJlbW92ZVJlY29yZCIsInJlcGxhY2VLZXkiLCJrZXkiLCJyZXBsYWNlQXR0cmlidXRlIiwiYXR0cmlidXRlIiwiYWRkVG9SZWxhdGVkUmVjb3JkcyIsInJlbGF0aW9uc2hpcCIsInJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZHMiLCJnZXRSZWxhdGVkUmVjb3Jkc1N5bmMiLCJyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMiLCJyZXBsYWNlUmVsYXRlZFJlY29yZHMiLCJyZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkIiwiY3VycmVudFJlbGF0ZWRSZWNvcmQiLCJnZXRSZWxhdGVkUmVjb3JkU3luYyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsT0FBVCxFQUFrQkMsT0FBbEIsRUFBMkJDLEVBQTNCLEVBQStCQyxPQUEvQixRQUE4QyxjQUE5QztBQUNBLFNBQVNDLHFCQUFULEVBQWdDQyx1QkFBaEMsRUFBeURDLGNBQXpELFFBQStFLGFB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NklMO0FBQUEsWUFDcEJDLE1BRG9CLEdBQ29CRCxFQURwQixDQUNwQkMsTUFEb0I7QUFBQSxZQUNaMkIsWUFEWSxHQUNvQjVCLEVBRHBCLENBQ1o0QixZQURZO0FBQUEsWUFDRUMsYUFERixHQUNvQjdCLEVBRHBCLENBQ0U2QixhQURGOztBQUU1QixZQUFNTyx1QkFBdUJyQyxNQUFNc0Msb0JBQU4sQ0FBMkJwQyxNQUEzQixFQUFtQzJCLFlBQW5DLENBQTdCO0FBQ0EsWUFBSVEseUJBQXlCbkIsU0FBekIsSUFBc0MsQ0FBQ3ZCLHNCQUFzQjBDLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhDLDhCQUZHO0FBR0gyQiwwQ0FIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBeEpvQyxDQUFsQyIsImZpbGUiOiJvcGVyYXRvcnMvc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBHZXQsIGRlZXBTZXQsIGVxLCBpc0FycmF5IH0gZnJvbSAnQG9yYml0L3V0aWxzJztcbmltcG9ydCB7IGVxdWFsUmVjb3JkSWRlbnRpdGllcywgZXF1YWxSZWNvcmRJZGVudGl0eVNldHMsIHJlY29yZHNJbmNsdWRlIH0gZnJvbSAnQG9yYml0L2RhdGEnO1xuZXhwb3J0IGNvbnN0IFN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHJlcGxhY2VtZW50O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfTtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBbJ2F0dHJpYnV0ZXMnLCAna2V5cyddLmZvckVhY2goZ3JvdXBpbmcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFtncm91cGluZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRbZ3JvdXBpbmddKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcGxhY2VtZW50W2dyb3VwaW5nXVtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZGVlcEdldChjdXJyZW50LCBbZ3JvdXBpbmcsIGZpZWxkXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVxKHZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFtncm91cGluZywgZmllbGRdLCBjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50RGF0YSA9IGRlZXBHZXQoY3VycmVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IGRlZXBHZXQocmVwbGFjZW1lbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aW9uc2hpcE1hdGNoO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcnJheShkYXRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwTWF0Y2ggPSBlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXBNYXRjaCA9IGVxdWFsUmVjb3JkSWRlbnRpdGllcyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWxhdGlvbnNoaXBNYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10sIGN1cnJlbnREYXRhID09PSB1bmRlZmluZWQgPyBudWxsIDogY3VycmVudERhdGEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIG9wOiAndXBkYXRlUmVjb3JkJyxcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZXN1bHRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlbW92ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVwbGFjZUtleShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBrZXkgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsna2V5cycsIGtleV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VLZXknLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVwbGFjZUF0dHJpYnV0ZShjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyBhdHRyaWJ1dGUgfSA9IG9wO1xuICAgICAgICBjb25zdCByZWNvcmQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSByZWNvcmQgJiYgZGVlcEdldChyZWNvcmQsIFsnYXR0cmlidXRlcycsIGF0dHJpYnV0ZV0pO1xuICAgICAgICBpZiAoIWVxKGN1cnJlbnQsIG9wLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0eXBlLCBpZCB9ID0gb3AucmVjb3JkO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlcGxhY2VBdHRyaWJ1dGUnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9LFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY3VycmVudFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkVG9SZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZCB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgPT09IHVuZGVmaW5lZCB8fCAhcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZUZyb21SZWxhdGVkUmVjb3JkcycsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzICE9PSB1bmRlZmluZWQgJiYgcmVjb3Jkc0luY2x1ZGUoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ2FkZFRvUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVwbGFjZVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkcyB9ID0gb3A7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyA9IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRzU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZHMgPT09IHVuZGVmaW5lZCB8fCAhZXF1YWxSZWNvcmRJZGVudGl0eVNldHMoY3VycmVudFJlbGF0ZWRSZWNvcmRzLCByZWxhdGVkUmVjb3JkcykpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZHM6IGN1cnJlbnRSZWxhdGVkUmVjb3JkcyB8fCBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVwbGFjZVJlbGF0ZWRSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZCA9IGNhY2hlLmdldFJlbGF0ZWRSZWNvcmRTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdGllcyhjdXJyZW50UmVsYXRlZFJlY29yZCwgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlUmVsYXRlZFJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkLFxuICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcCxcbiAgICAgICAgICAgICAgICByZWxhdGVkUmVjb3JkOiBjdXJyZW50UmVsYXRlZFJlY29yZCB8fCBudWxsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxufTsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9wZXJhdG9ycy9zeW5jLWludmVyc2UtcGF0Y2gtb3BlcmF0b3JzLmpzIl0sIm5hbWVzIjpbImRlZXBHZXQiLCJkZWVwU2V0IiwiZXEiLCJpc0FycmF5IiwiZXF1YWxSZWNvcmRJZGVudGl0aWVzIiwiZXF1YWxSZWNvcmRJZGVudGl0eVNldHMiLCJyZWNvcmRzSW5jbHVkZSIsIlN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMiLCJhZGRSZWNvcmQiLCJjYWNoZSIsIm9wIiwicmVjb3JkIiwidHlwZSIsImlkIiwiY3VycmVudCIsImdldFJlY29yZFN5bmMiLCJ1cGRhdGVSZWNvcmQiLCJyZXBsYWNlbWVudCIsInJlc3VsdCIsImNoYW5nZWQiLCJmb3JFYWNoIiwiZ3JvdXBpbmciLCJPYmplY3QiLCJrZXlzIiwidmFsdWUiLCJmaWVsZCIsImN1cnJlbnRWYWx1ZSIsInVuZGVmaW5lZCIsInJlbGF0aW9uc2hpcHMiLCJkYXRhIiwiY3VycmVudERhdGEiLCJyZWxhdGlvbnNoaXBDaGFuZ2VkIiwicmVtb3ZlUmVjb3JkIiwicmVwbGFjZUtleSIsImtleSIsInJlcGxhY2VBdHRyaWJ1dGUiLCJhdHRyaWJ1dGUiLCJhZGRUb1JlbGF0ZWRSZWNvcmRzIiwicmVsYXRpb25zaGlwIiwicmVsYXRlZFJlY29yZCIsImN1cnJlbnRSZWxhdGVkUmVjb3JkcyIsImdldFJlbGF0ZWRSZWNvcmRzU3luYyIsInJlbW92ZUZyb21SZWxhdGVkUmVjb3JkcyIsInJlcGxhY2VSZWxhdGVkUmVjb3JkcyIsInJlbGF0ZWRSZWNvcmRzIiwicmVwbGFjZVJlbGF0ZWRSZWNvcmQiLCJjdXJyZW50UmVsYXRlZFJlY29yZCIsImdldFJlbGF0ZWRSZWNvcmRTeW5jIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxPQUFULEVBQWtCQyxPQUFsQixFQUEyQkMsRUFBM0IsRUFBK0JDLE9BQS9CLFFBQThDLGNBQTlDO0FBQ0EsU0FBU0MscUJBQVQsRUFBZ0NDLHVCQUFoQyxFQUF5REMsY0FBekQsUUFBK0Us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LGNBQS9DLENBQTVDLEVBQTRHO0FBQ3hHLG1CQUFPO0FBQ0hsQyxvQkFBSSx1QkFERDtBQUVIQyw4QkFGRztBQUdIMkIsMENBSEc7QUFJSE0sZ0NBQWdCSix5QkFBeUI7QUFKdEMsYUFBUDtBQU1IO0FBQ0osS0F4Sm9DO0FBeUpyQ0ssd0JBekpxQyxZQXlKaEJwQyxLQXpKZ0IsRUF5SlRDLEVBekpTLEVBeUpMO0FBQUEsWUFDcEJDLE1BRG9CLEdBQ29CRCxFQURwQixDQUNwQkMsTUFEb0I7QUFBQSxZQUNaMkIsWUFEWSxHQUNvQjVCLEVBRHBCLENBQ1o0QixZQURZO0FBQUEsWUFDRUMsYUFERixHQUNvQjdCLEVBRHBCLENBQ0U2QixhQURGOztBQUU1QixZQUFNTyx1QkFBdUJyQyxNQUFNc0Msb0JBQU4sQ0FBMkJwQyxNQUEzQixFQUFtQzJCLFlBQW5DLENBQTdCO0FBQ0EsWUFBSVEseUJBQXlCbkIsU0FBekIsSUFBc0MsQ0FBQ3ZCLHNCQUFzQjBDLG9CQUF0QixFQUE0Q1AsYUFBNUMsQ0FBM0MsRUFBdUc7QUFDbkcsbUJBQU87QUFDSDdCLG9CQUFJLHNCQUREO0FBRUhDLDhCQUZHO0FBR0gyQiwwQ0FIRztBQUlIQywrQkFBZU8sd0JBQXdCO0FBSnBDLGFBQVA7QUFNSDtBQUNKO0FBcEtvQyxDQUFsQyIsImZpbGUiOiJvcGVyYXRvcnMvc3luYy1pbnZlcnNlLXBhdGNoLW9wZXJhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZXBHZXQsIGRlZXBTZXQsIGVxLCBpc0FycmF5IH0gZnJvbSAnQG9yYml0L3V0aWxzJztcbmltcG9ydCB7IGVxdWFsUmVjb3JkSWRlbnRpdGllcywgZXF1YWxSZWNvcmRJZGVudGl0eVNldHMsIHJlY29yZHNJbmNsdWRlIH0gZnJvbSAnQG9yYml0L2RhdGEnO1xuZXhwb3J0IGNvbnN0IFN5bmNJbnZlcnNlUGF0Y2hPcGVyYXRvcnMgPSB7XG4gICAgYWRkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHR5cGUsIGlkIH0gPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICBpZiAoZXEoY3VycmVudCwgb3AucmVjb3JkKSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgb3A6ICd1cGRhdGVSZWNvcmQnLFxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBvcDogJ3JlbW92ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgcmVjb3JkOiB7IHR5cGUsIGlkIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHVwZGF0ZVJlY29yZChjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgY3VycmVudCA9IGNhY2hlLmdldFJlY29yZFN5bmMob3AucmVjb3JkKTtcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSBvcC5yZWNvcmQ7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IHJlcGxhY2VtZW50O1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHsgdHlwZSwgaWQgfTtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBbJ2F0dHJpYnV0ZXMnLCAna2V5cyddLmZvckVhY2goZ3JvdXBpbmcgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFtncm91cGluZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnRbZ3JvdXBpbmddKS5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHJlcGxhY2VtZW50W2dyb3VwaW5nXVtmaWVsZF07XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudFZhbHVlID0gZGVlcEdldChjdXJyZW50LCBbZ3JvdXBpbmcsIGZpZWxkXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWVxKHZhbHVlLCBjdXJyZW50VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNldChyZXN1bHQsIFtncm91cGluZywgZmllbGRdLCBjdXJyZW50VmFsdWUgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjdXJyZW50VmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMocmVwbGFjZW1lbnQucmVsYXRpb25zaGlwcykuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGVlcEdldChyZXBsYWNlbWVudCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY3VycmVudERhdGEgPSBkZWVwR2V0KGN1cnJlbnQsIFsncmVsYXRpb25zaGlwcycsIGZpZWxkLCAnZGF0YSddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWxhdGlvbnNoaXBDaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXR5U2V0cyhjdXJyZW50RGF0YSwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwQ2hhbmdlZCA9ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudERhdGEsIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aW9uc2hpcENoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlbGF0aW9uc2hpcENoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2V0KHJlc3VsdCwgWydyZWxhdGlvbnNoaXBzJywgZmllbGQsICdkYXRhJ10sIGN1cnJlbnREYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBvcDogJ3VwZGF0ZVJlY29yZCcsXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVzdWx0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZDogeyB0eXBlLCBpZCB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSxcbiAgICByZW1vdmVSZWNvcmQoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBjYWNoZS5nZXRSZWNvcmRTeW5jKG9wLnJlY29yZCk7XG4gICAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAnYWRkUmVjb3JkJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VLZXkoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsga2V5IH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2tleXMnLCBrZXldKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlS2V5JyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VBdHRyaWJ1dGUoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgYXR0cmlidXRlIH0gPSBvcDtcbiAgICAgICAgY29uc3QgcmVjb3JkID0gY2FjaGUuZ2V0UmVjb3JkU3luYyhvcC5yZWNvcmQpO1xuICAgICAgICBjb25zdCBjdXJyZW50ID0gcmVjb3JkICYmIGRlZXBHZXQocmVjb3JkLCBbJ2F0dHJpYnV0ZXMnLCBhdHRyaWJ1dGVdKTtcbiAgICAgICAgaWYgKCFlcShjdXJyZW50LCBvcC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgaWQgfSA9IG9wLnJlY29yZDtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZXBsYWNlQXR0cmlidXRlJyxcbiAgICAgICAgICAgICAgICByZWNvcmQ6IHsgdHlwZSwgaWQgfSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGN1cnJlbnRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGFkZFRvUmVsYXRlZFJlY29yZHMoY2FjaGUsIG9wKSB7XG4gICAgICAgIGNvbnN0IHsgcmVjb3JkLCByZWxhdGlvbnNoaXAsIHJlbGF0ZWRSZWNvcmQgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIXJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdyZW1vdmVGcm9tUmVsYXRlZFJlY29yZHMnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgcmVtb3ZlRnJvbVJlbGF0ZWRSZWNvcmRzKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmRzID0gY2FjaGUuZ2V0UmVsYXRlZFJlY29yZHNTeW5jKHJlY29yZCwgcmVsYXRpb25zaGlwKTtcbiAgICAgICAgaWYgKGN1cnJlbnRSZWxhdGVkUmVjb3JkcyAhPT0gdW5kZWZpbmVkICYmIHJlY29yZHNJbmNsdWRlKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgb3A6ICdhZGRUb1JlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkcyhjYWNoZSwgb3ApIHtcbiAgICAgICAgY29uc3QgeyByZWNvcmQsIHJlbGF0aW9uc2hpcCwgcmVsYXRlZFJlY29yZHMgfSA9IG9wO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVsYXRlZFJlY29yZHMgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3Jkc1N5bmMocmVjb3JkLCByZWxhdGlvbnNoaXApO1xuICAgICAgICBpZiAoY3VycmVudFJlbGF0ZWRSZWNvcmRzID09PSB1bmRlZmluZWQgfHwgIWVxdWFsUmVjb3JkSWRlbnRpdHlTZXRzKGN1cnJlbnRSZWxhdGVkUmVjb3JkcywgcmVsYXRlZFJlY29yZHMpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmRzJyxcbiAgICAgICAgICAgICAgICByZWNvcmQsXG4gICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwLFxuICAgICAgICAgICAgICAgIHJlbGF0ZWRSZWNvcmRzOiBjdXJyZW50UmVsYXRlZFJlY29yZHMgfHwgW11cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHJlcGxhY2VSZWxhdGVkUmVjb3JkKGNhY2hlLCBvcCkge1xuICAgICAgICBjb25zdCB7IHJlY29yZCwgcmVsYXRpb25zaGlwLCByZWxhdGVkUmVjb3JkIH0gPSBvcDtcbiAgICAgICAgY29uc3QgY3VycmVudFJlbGF0ZWRSZWNvcmQgPSBjYWNoZS5nZXRSZWxhdGVkUmVjb3JkU3luYyhyZWNvcmQsIHJlbGF0aW9uc2hpcCk7XG4gICAgICAgIGlmIChjdXJyZW50UmVsYXRlZFJlY29yZCA9PT0gdW5kZWZpbmVkIHx8ICFlcXVhbFJlY29yZElkZW50aXRpZXMoY3VycmVudFJlbGF0ZWRSZWNvcmQsIHJlbGF0ZWRSZWNvcmQpKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG9wOiAncmVwbGFjZVJlbGF0ZWRSZWNvcmQnLFxuICAgICAgICAgICAgICAgIHJlY29yZCxcbiAgICAgICAgICAgICAgICByZWxhdGlvbnNoaXAsXG4gICAgICAgICAgICAgICAgcmVsYXRlZFJlY29yZDogY3VycmVudFJlbGF0ZWRSZWNvcmQgfHwgbnVsbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn07Il19
{
"name": "@orbit/record-cache",
"version": "0.16.0-beta.4",
"version": "0.16.0-beta.5",
"description": "Orbit base classes used to access and maintain a set of records.",

@@ -5,0 +5,0 @@ "contributors": [

@@ -70,15 +70,28 @@ import { Dict, deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(field => {
let currentData = deepGet(current, ['relationships', field, 'data']);
let data = deepGet(replacement, ['relationships', field, 'data']);
if (data !== undefined) {
let currentData = deepGet(current, ['relationships', field, 'data']);
let relationshipChanged;
let relationshipMatch;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
}
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}

@@ -85,0 +98,0 @@ });

@@ -70,15 +70,28 @@ import { Dict, deepGet, deepSet, eq, isArray } from '@orbit/utils';

Object.keys(replacement.relationships).forEach(field => {
let currentData = deepGet(current, ['relationships', field, 'data']);
let data = deepGet(replacement, ['relationships', field, 'data']);
if (data !== undefined) {
let currentData = deepGet(current, ['relationships', field, 'data']);
let relationshipChanged;
let relationshipMatch;
if (isArray(data)) {
relationshipMatch = equalRecordIdentitySets(currentData, data);
} else {
relationshipMatch = equalRecordIdentities(currentData, data);
}
if (isArray(data)) {
if (currentData) {
relationshipChanged = !equalRecordIdentitySets(currentData, data);
} else {
relationshipChanged = true;
currentData = [];
}
if (!relationshipMatch) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData === undefined ? null : currentData);
} else {
if (currentData) {
relationshipChanged = !equalRecordIdentities(currentData, data);
} else {
relationshipChanged = true;
currentData = null;
}
}
if (relationshipChanged) {
changed = true;
deepSet(result, ['relationships', field, 'data'], currentData);
}
}

@@ -85,0 +98,0 @@ });

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc