UNPKG

ember-legacy-class-transform

Version:
274 lines (216 loc) 23.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OptimizedTrustingAppendOpcode = exports.OptimizedCautiousAppendOpcode = exports.IsComponentDefinitionReference = exports.AppendDynamicOpcode = undefined; exports.normalizeTextValue = normalizeTextValue; var _reference2 = require("@glimmer/reference"); var _bounds = require("../../bounds"); var _builder = require("../../builder"); var _interfaces = require("../../component/interfaces"); var _opcodes = require("../../opcodes"); var _references = require("../../references"); var _upsert = require("../../upsert"); function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults);for (var i = 0; i < keys.length; i++) { var key = keys[i];var value = Object.getOwnPropertyDescriptor(defaults, key);if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } }return obj; } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); }return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); }subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } _opcodes.APPEND_OPCODES.add(26 /* DynamicContent */, function (vm, _ref) { var append = _ref.op1; var opcode = vm.constants.getOther(append); opcode.evaluate(vm); }); function isEmpty(value) { return value === null || value === undefined || typeof value.toString !== 'function'; } function normalizeTextValue(value) { if (isEmpty(value)) { return ''; } return String(value); } function normalizeTrustedValue(value) { if (isEmpty(value)) { return ''; } if ((0, _upsert.isString)(value)) { return value; } if ((0, _upsert.isSafeString)(value)) { return value.toHTML(); } if ((0, _upsert.isNode)(value)) { return value; } return String(value); } function normalizeValue(value) { if (isEmpty(value)) { return ''; } if ((0, _upsert.isString)(value)) { return value; } if ((0, _upsert.isSafeString)(value) || (0, _upsert.isNode)(value)) { return value; } return String(value); } var AppendDynamicOpcode = exports.AppendDynamicOpcode = function () { function AppendDynamicOpcode() { _classCallCheck(this, AppendDynamicOpcode); } AppendDynamicOpcode.prototype.evaluate = function evaluate(vm) { var reference = vm.stack.pop(); var normalized = this.normalize(reference); var value = void 0; var cache = void 0; if ((0, _reference2.isConst)(reference)) { value = normalized.value(); } else { cache = new _reference2.ReferenceCache(normalized); value = cache.peek(); } var stack = vm.elements(); var upsert = this.insert(vm.env.getAppendOperations(), stack, value); var bounds = new _builder.Fragment(upsert.bounds); stack.newBounds(bounds); if (cache /* i.e. !isConst(reference) */) { vm.updateWith(this.updateWith(vm, reference, cache, bounds, upsert)); } }; return AppendDynamicOpcode; }(); var IsComponentDefinitionReference = exports.IsComponentDefinitionReference = function (_ConditionalReference) { _inherits(IsComponentDefinitionReference, _ConditionalReference); function IsComponentDefinitionReference() { _classCallCheck(this, IsComponentDefinitionReference); return _possibleConstructorReturn(this, _ConditionalReference.apply(this, arguments)); } IsComponentDefinitionReference.create = function create(inner) { return new IsComponentDefinitionReference(inner); }; IsComponentDefinitionReference.prototype.toBool = function toBool(value) { return (0, _interfaces.isComponentDefinition)(value); }; return IsComponentDefinitionReference; }(_references.ConditionalReference); var UpdateOpcode = function (_UpdatingOpcode) { _inherits(UpdateOpcode, _UpdatingOpcode); function UpdateOpcode(cache, bounds, upsert) { _classCallCheck(this, UpdateOpcode); var _this2 = _possibleConstructorReturn(this, _UpdatingOpcode.call(this)); _this2.cache = cache; _this2.bounds = bounds; _this2.upsert = upsert; _this2.tag = cache.tag; return _this2; } UpdateOpcode.prototype.evaluate = function evaluate(vm) { var value = this.cache.revalidate(); if ((0, _reference2.isModified)(value)) { var bounds = this.bounds, upsert = this.upsert; var dom = vm.dom; if (!this.upsert.update(dom, value)) { var cursor = new _bounds.Cursor(bounds.parentElement(), (0, _bounds.clear)(bounds)); upsert = this.upsert = this.insert(vm.env.getAppendOperations(), cursor, value); } bounds.update(upsert.bounds); } }; UpdateOpcode.prototype.toJSON = function toJSON() { var guid = this._guid, type = this.type, cache = this.cache; return { details: { lastValue: JSON.stringify(cache.peek()) }, guid: guid, type: type }; }; return UpdateOpcode; }(_opcodes.UpdatingOpcode); var OptimizedCautiousAppendOpcode = exports.OptimizedCautiousAppendOpcode = function (_AppendDynamicOpcode) { _inherits(OptimizedCautiousAppendOpcode, _AppendDynamicOpcode); function OptimizedCautiousAppendOpcode() { _classCallCheck(this, OptimizedCautiousAppendOpcode); var _this3 = _possibleConstructorReturn(this, _AppendDynamicOpcode.apply(this, arguments)); _this3.type = 'optimized-cautious-append'; return _this3; } OptimizedCautiousAppendOpcode.prototype.normalize = function normalize(reference) { return (0, _reference2.map)(reference, normalizeValue); }; OptimizedCautiousAppendOpcode.prototype.insert = function insert(dom, cursor, value) { return (0, _upsert.cautiousInsert)(dom, cursor, value); }; OptimizedCautiousAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) { return new OptimizedCautiousUpdateOpcode(cache, bounds, upsert); }; return OptimizedCautiousAppendOpcode; }(AppendDynamicOpcode); var OptimizedCautiousUpdateOpcode = function (_UpdateOpcode) { _inherits(OptimizedCautiousUpdateOpcode, _UpdateOpcode); function OptimizedCautiousUpdateOpcode() { _classCallCheck(this, OptimizedCautiousUpdateOpcode); var _this4 = _possibleConstructorReturn(this, _UpdateOpcode.apply(this, arguments)); _this4.type = 'optimized-cautious-update'; return _this4; } OptimizedCautiousUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return (0, _upsert.cautiousInsert)(dom, cursor, value); }; return OptimizedCautiousUpdateOpcode; }(UpdateOpcode); var OptimizedTrustingAppendOpcode = exports.OptimizedTrustingAppendOpcode = function (_AppendDynamicOpcode2) { _inherits(OptimizedTrustingAppendOpcode, _AppendDynamicOpcode2); function OptimizedTrustingAppendOpcode() { _classCallCheck(this, OptimizedTrustingAppendOpcode); var _this5 = _possibleConstructorReturn(this, _AppendDynamicOpcode2.apply(this, arguments)); _this5.type = 'optimized-trusting-append'; return _this5; } OptimizedTrustingAppendOpcode.prototype.normalize = function normalize(reference) { return (0, _reference2.map)(reference, normalizeTrustedValue); }; OptimizedTrustingAppendOpcode.prototype.insert = function insert(dom, cursor, value) { return (0, _upsert.trustingInsert)(dom, cursor, value); }; OptimizedTrustingAppendOpcode.prototype.updateWith = function updateWith(_vm, _reference, cache, bounds, upsert) { return new OptimizedTrustingUpdateOpcode(cache, bounds, upsert); }; return OptimizedTrustingAppendOpcode; }(AppendDynamicOpcode); var OptimizedTrustingUpdateOpcode = function (_UpdateOpcode2) { _inherits(OptimizedTrustingUpdateOpcode, _UpdateOpcode2); function OptimizedTrustingUpdateOpcode() { _classCallCheck(this, OptimizedTrustingUpdateOpcode); var _this6 = _possibleConstructorReturn(this, _UpdateOpcode2.apply(this, arguments)); _this6.type = 'optimized-trusting-update'; return _this6; } OptimizedTrustingUpdateOpcode.prototype.insert = function insert(dom, cursor, value) { return (0, _upsert.trustingInsert)(dom, cursor, value); }; return OptimizedTrustingUpdateOpcode; }(UpdateOpcode); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbnRlbnQuanMiXSwibmFtZXMiOlsiaXNDb25zdCIsImlzTW9kaWZpZWQiLCJtYXAiLCJSZWZlcmVuY2VDYWNoZSIsImNsZWFyIiwiQ3Vyc29yIiwiRnJhZ21lbnQiLCJpc0NvbXBvbmVudERlZmluaXRpb24iLCJBUFBFTkRfT1BDT0RFUyIsIlVwZGF0aW5nT3Bjb2RlIiwiQ29uZGl0aW9uYWxSZWZlcmVuY2UiLCJjYXV0aW91c0luc2VydCIsImlzTm9kZSIsImlzU2FmZVN0cmluZyIsImlzU3RyaW5nIiwidHJ1c3RpbmdJbnNlcnQiLCJhZGQiLCJ2bSIsImFwcGVuZCIsIm9wMSIsIm9wY29kZSIsImNvbnN0YW50cyIsImdldE90aGVyIiwiZXZhbHVhdGUiLCJpc0VtcHR5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJ0b1N0cmluZyIsIm5vcm1hbGl6ZVRleHRWYWx1ZSIsIlN0cmluZyIsIm5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSIsInRvSFRNTCIsIm5vcm1hbGl6ZVZhbHVlIiwiQXBwZW5kRHluYW1pY09wY29kZSIsInJlZmVyZW5jZSIsInN0YWNrIiwicG9wIiwibm9ybWFsaXplZCIsIm5vcm1hbGl6ZSIsImNhY2hlIiwicGVlayIsImVsZW1lbnRzIiwidXBzZXJ0IiwiaW5zZXJ0IiwiZW52IiwiZ2V0QXBwZW5kT3BlcmF0aW9ucyIsImJvdW5kcyIsIm5ld0JvdW5kcyIsInVwZGF0ZVdpdGgiLCJJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UiLCJjcmVhdGUiLCJpbm5lciIsInRvQm9vbCIsIlVwZGF0ZU9wY29kZSIsInRhZyIsInJldmFsaWRhdGUiLCJkb20iLCJ1cGRhdGUiLCJjdXJzb3IiLCJwYXJlbnRFbGVtZW50IiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwidHlwZSIsImRldGFpbHMiLCJsYXN0VmFsdWUiLCJKU09OIiwic3RyaW5naWZ5IiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJhcmd1bWVudHMiLCJfdm0iLCJfcmVmZXJlbmNlIiwiT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUiLCJPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSIsIk9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFjTyxBQUFTOztBQWRoQixBQUFTLEFBQVMsQUFBWSxBQUFLLEFBQXNCOztBQUN6RCxBQUFTLEFBQU8sQUFBYzs7QUFDOUIsQUFBUyxBQUFnQjs7QUFDekIsQUFBUyxBQUE2Qjs7QUFDdEMsQUFBUyxBQUFnQixBQUFzQjs7QUFDL0MsQUFBUyxBQUE0Qjs7QUFDckMsQUFBUyxBQUFnQixBQUFRLEFBQWMsQUFBVSxBQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUMvRSx3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0Isc0JBQXNCLFVBQUEsQUFBQyxVQUF3QjtRQUFiLEFBQWEsY0FBbEIsQUFBa0IsQUFDakU7O1FBQUksU0FBUyxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTFCLEFBQWEsQUFBc0IsQUFDbkM7V0FBQSxBQUFPLFNBQVAsQUFBZ0IsQUFDbkI7QUFIRDtBQUlBLFNBQUEsQUFBUyxRQUFULEFBQWlCLE9BQU8sQUFDcEI7V0FBTyxVQUFBLEFBQVUsUUFBUSxVQUFsQixBQUE0QixhQUFhLE9BQU8sTUFBUCxBQUFhLGFBQTdELEFBQTBFLEFBQzdFO0FBQ0Q7QUFBTyw0QkFBQSxBQUE0QixPQUFPLEFBQ3RDO1FBQUksUUFBSixBQUFJLEFBQVEsUUFBUSxBQUNoQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1dBQU8sT0FBUCxBQUFPLEFBQU8sQUFDakI7O0FBQ0QsU0FBQSxBQUFTLHNCQUFULEFBQStCLE9BQU8sQUFDbEM7UUFBSSxRQUFKLEFBQUksQUFBUSxRQUFRLEFBQ2hCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxzQkFBSixBQUFJLEFBQVMsUUFBUSxBQUNqQjtlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUksMEJBQUos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OzRDLEFBQ0QseUIsQUFBTyxLLEFBQUssUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQUFTNUMsQTs7SUFBQSxBQUFhLHlHQUFiOzZDQUNJOzs2Q0FBYzs4QkFBQTs7c0RBQ1Ysa0NBRFUsQUFDVixBQUFTLEFBQ1Q7O2VBQUEsQUFBSyxPQUZLLEFBRVYsQUFBWTtlQUNmO0FBSkw7OzRDQUFBLEFBS0ksK0JBTEosQUFLYyxXQUFXLEFBQ2pCO2VBQU8scUJBQUEsQUFBSSxXQUFYLEFBQU8sQUFBZSxBQUN6QjtBQVBMOzs0Q0FBQSxBQVFJLHlCQVJKLEFBUVcsS0FSWCxBQVFnQixRQVJoQixBQVF3QixPQUFPLEFBQ3ZCO2VBQU8sNEJBQUEsQUFBZSxLQUFmLEFBQW9CLFFBQTNCLEFBQU8sQUFBNEIsQUFDdEM7QUFWTDs7NENBQUEsQUFXSSxpQ0FYSixBQVdlLEtBWGYsQUFXb0IsWUFYcEIsQUFXZ0MsT0FYaEMsQUFXdUMsUUFYdkMsQUFXK0MsUUFBUSxBQUMvQztlQUFPLElBQUEsQUFBSSw4QkFBSixBQUFrQyxPQUFsQyxBQUF5QyxRQUFoRCxBQUFPLEFBQWlELEFBQzNEO0FBYkw7O1dBQUE7RUFBQSxBQUFtRDs7SUFlN0MsQTs2Q0FDRjs7NkNBQWM7OEJBQUE7O3NEQUNWLDJCQURVLEFBQ1YsQUFBUyxBQUNUOztlQUFBLEFBQUssT0FGSyxBQUVWLEFBQVk7ZUFDZjs7OzRDLEFBQ0QseUIsQUFBTyxLQUFLLEEsUUFBUSxBLE9BQU8sQUFDdkI7ZUFBTyw0QkFBQSxBQUFlLEtBQWYsQUFBb0IsUUFBM0IsQUFBTyxBQUE0QixBQUN0QztBOzs7RUFQdUMsQSIsImZpbGUiOiJsaWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNDb25zdCwgaXNNb2RpZmllZCwgbWFwLCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBjbGVhciwgQ3Vyc29yIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBpc0NvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBjYXV0aW91c0luc2VydCwgaXNOb2RlLCBpc1NhZmVTdHJpbmcsIGlzU3RyaW5nLCB0cnVzdGluZ0luc2VydCB9IGZyb20gJy4uLy4uL3Vwc2VydCc7XG5BUFBFTkRfT1BDT0RFUy5hZGQoMjYgLyogRHluYW1pY0NvbnRlbnQgKi8sICh2bSwgeyBvcDE6IGFwcGVuZCB9KSA9PiB7XG4gICAgbGV0IG9wY29kZSA9IHZtLmNvbnN0YW50cy5nZXRPdGhlcihhcHBlbmQpO1xuICAgIG9wY29kZS5ldmFsdWF0ZSh2bSk7XG59KTtcbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWUudG9TdHJpbmcgIT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5mdW5jdGlvbiBub3JtYWxpemVUcnVzdGVkVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2UgPSB2bS5zdGFjay5wb3AoKTtcbiAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZShyZWZlcmVuY2UpO1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGxldCBjYWNoZTtcbiAgICAgICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZSA9IG5ldyBSZWZlcmVuY2VDYWNoZShub3JtYWxpemVkKTtcbiAgICAgICAgICAgIHZhbHVlID0gY2FjaGUucGVlaygpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGFjayA9IHZtLmVsZW1lbnRzKCk7XG4gICAgICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuICAgICAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcbiAgICAgICAgaWYgKGNhY2hlIC8qIGkuZS4gIWlzQ29uc3QocmVmZXJlbmNlKSAqLykge1xuICAgICAgICAgICAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgICAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gICAgc3RhdGljIGNyZWF0ZShpbm5lcikge1xuICAgICAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gICAgfVxuICAgIHRvQm9vbCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgICB9XG59XG5jbGFzcyBVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoY2FjaGUsIGJvdW5kcywgdXBzZXJ0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuY2FjaGUgPSBjYWNoZTtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudXBzZXJ0ID0gdXBzZXJ0O1xuICAgICAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG4gICAgICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgeyBkb20gfSA9IHZtO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnVwc2VydC51cGRhdGUoZG9tLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYm91bmRzLnVwZGF0ZSh1cHNlcnQuYm91bmRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH0sXG4gICAgICAgICAgICBndWlkLFxuICAgICAgICAgICAgdHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZER5bmFtaWNPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG4gICAgfVxuICAgIG5vcm1hbGl6ZShyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kRHluYW1pY09wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcbiAgICB9XG4gICAgbm9ybWFsaXplKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgICB9XG4gICAgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlV2l0aChfdm0sIF9yZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkge1xuICAgICAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgfVxufVxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG4gICAgfVxuICAgIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxufSJdfQ==