UNPKG

jsoniq

Version:

JSONiq implementation for JavaScript

98 lines (96 loc) 19.5 kB
"use strict"; require("jasmine2-pit"); var PUL_1 = require("../../../../lib/updates/PUL"); var PULComposition_1 = require("../../../../lib/updates/composition/PULComposition"); var Common_1 = require("./Common"); describe("RenameInObject Composition", () => { pit("Tests Aggregation with Insert", () => { var d0 = new PUL_1.default(); d0.insert("1", { a: 1 }); var d1 = new PUL_1.default(); d1.renameInObject("1", [], "a", "b"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.insert.length).toBe(1); expect(delta.udps.insert[0].item["b"]).toBe(1); return Common_1.default.checkCompositionIntegrity(d0, d1, {}).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (1)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", [], { a: 1 }); var d1 = new PUL_1.default(); d1.renameInObject("1", [], "a", "b"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.insertIntoObject.length).toBe(1); expect(delta.udps.insertIntoObject[0].pairs["b"]).toBe(1); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": {} }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with InsertIntoObject (2)", () => { var d0 = new PUL_1.default(); d0.insertIntoObject("1", ["a"], { b: 1, d: 1 }); var d1 = new PUL_1.default(); d1.renameInObject("1", ["a"], "b", "c"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.insertIntoObject.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.insertIntoObject[0].pairs, { c: 1, d: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with ReplaceInObject (1)", () => { var d0 = new PUL_1.default(); d0.replaceInObject("1", [], "a", { b: 1 }); var d1 = new PUL_1.default(); d1.renameInObject("1", ["a"], "b", "c"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.replaceInObject.length).toBe(1); expect(delta.udps.replaceInObject[0].key).toBe("a"); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, { c: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: {} } }).then(result => { expect(result).toBe(true); }); }); pit("Tests Aggregation with ReplaceInObject (2)", () => { var d0 = new PUL_1.default(); d0.replaceInObject("1", ["a"], "b", { c: 1 }); var d1 = new PUL_1.default(); d1.renameInObject("1", ["a", "b"], "c", "d"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(0); expect(delta.udps.replaceInObject.length).toBe(1); expect(Common_1.default.isEqual(delta.udps.replaceInObject[0].item, { d: 1 })).toBe(true); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: { b: 1 } } }).then(result => { expect(result).toBe(true); }); }); pit("Test Aggregation with RenameInObject (1)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "a", "b"); var d1 = new PUL_1.default(); d1.renameInObject("1", ["b"], "c", "d"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(2); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { a: { c: 1 } } }).then(result => { expect(result).toBe(true); }); }); pit("Test Accumulation (1)", () => { var d0 = new PUL_1.default(); d0.renameInObject("1", [], "a", "z"); var d1 = new PUL_1.default(); d1.renameInObject("1", ["b"], "c", "d"); var delta = PULComposition_1.default.compose(d0, d1, true); expect(delta.udps.renameInObject.length).toBe(2); return Common_1.default.checkCompositionIntegrity(d0, d1, { "1": { b: { c: 1 }, a: 1 } }).then(result => { expect(result).toBe(true); }); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZW5hbWVJbk9iamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRXhCLG9CQUFnQiw2QkFBNkIsQ0FBQyxDQUFBO0FBQzlDLCtCQUEyQixvREFBb0QsQ0FBQyxDQUFBO0FBQ2hGLHVCQUFtQixVQUFVLENBQUMsQ0FBQTtBQUk5QixRQUFRLENBQUMsNEJBQTRCLEVBQUU7SUFFbkMsR0FBRyxDQUFDLCtCQUErQixFQUFFO1FBQ2pDLElBQUksRUFBRSxHQUFHLElBQUksYUFBRyxFQUFFLENBQUM7UUFDbkIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFckMsSUFBSSxLQUFLLEdBQUcsd0JBQWMsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsZ0JBQU0sQ0FBQyx5QkFBeUIsQ0FB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QyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyx1QkFBdUIsRUFBRTtRQUN6QixJQUFJLEVBQUUsR0FBRyxJQUFJLGFBQUcsRUFBRSxDQUFDO1FBQ25CLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFckMsSUFBSSxFQUFFLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUNuQixFQUFFLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV4QyxJQUFJLEtBQUssR0FBRyx3QkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakQsTUFBTSxDQUFDLGdCQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ3ZGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3RzL25vZGUvdXBkYXRlcy9jb21wb3NpdGlvbi9SZW5hbWVJbk9iamVjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbInJlcXVpcmUoXCJqYXNtaW5lMi1waXRcIik7XG5cbmltcG9ydCBQVUwgZnJvbSBcIi4uLy4uLy4uLy4uL2xpYi91cGRhdGVzL1BVTFwiO1xuaW1wb3J0IFBVTENvbXBvc2l0aW9uIGZyb20gXCIuLi8uLi8uLi8uLi9saWIvdXBkYXRlcy9jb21wb3NpdGlvbi9QVUxDb21wb3NpdGlvblwiO1xuaW1wb3J0IENvbW1vbiBmcm9tIFwiLi9Db21tb25cIjtcblxuZGVjbGFyZSBmdW5jdGlvbiBwaXQoZXhwZWN0YXRpb246IHN0cmluZywgYXNzZXJ0aW9uPzogKGRvbmU6ICgpID0+IHZvaWQpID0+IGFueSk6IHZvaWQ7XG5cbmRlc2NyaWJlKFwiUmVuYW1lSW5PYmplY3QgQ29tcG9zaXRpb25cIiwgKCkgPT4ge1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLmluc2VydChcIjFcIiwgeyBhOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVuYW1lSW5PYmplY3QoXCIxXCIsIFtdLCBcImFcIiwgXCJiXCIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnQubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5pbnNlcnRbMF0uaXRlbVtcImJcIl0pLnRvQmUoMSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwge30pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRJbnRvT2JqZWN0ICgxKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW10sIHsgYTogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIFwiYlwiKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLnJlbmFtZUluT2JqZWN0Lmxlbmd0aCkudG9CZSgwKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMuaW5zZXJ0SW50b09iamVjdC5sZW5ndGgpLnRvQmUoMSk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3RbMF0ucGFpcnNbXCJiXCJdKS50b0JlKDEpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHt9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcGl0KFwiVGVzdHMgQWdncmVnYXRpb24gd2l0aCBJbnNlcnRJbnRvT2JqZWN0ICgyKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAuaW5zZXJ0SW50b09iamVjdChcIjFcIiwgW1wiYVwiXSwgeyBiOiAxLCBkOiAxIH0pO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVuYW1lSW5PYmplY3QoXCIxXCIsIFtcImFcIl0sIFwiYlwiLCBcImNcIik7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZW5hbWVJbk9iamVjdC5sZW5ndGgpLnRvQmUoMCk7XG4gICAgICAgIGV4cGVjdChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgICBDb21tb24uaXNFcXVhbChkZWx0YS51ZHBzLmluc2VydEludG9PYmplY3RbMF0ucGFpcnMsIHsgYzogMSwgZDogMSB9KVxuICAgICAgICApLnRvQmUodHJ1ZSk7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBhOiB7fSB9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG5cbiAgICBwaXQoXCJUZXN0cyBBZ2dyZWdhdGlvbiB3aXRoIFJlcGxhY2VJbk9iamVjdCAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW10sIFwiYVwiLCB7IGI6IDEgfSk7XG5cbiAgICAgICAgdmFyIGQxID0gbmV3IFBVTCgpO1xuICAgICAgICBkMS5yZW5hbWVJbk9iamVjdChcIjFcIiwgW1wiYVwiXSwgXCJiXCIsIFwiY1wiKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG5cbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0ua2V5KS50b0JlKFwiYVwiKTtcbiAgICAgICAgZXhwZWN0KFxuICAgICAgICAgICAgQ29tbW9uLmlzRXF1YWwoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3RbMF0uaXRlbSwgeyBjOiAxIH0pXG4gICAgICAgICkudG9CZSh0cnVlKTtcblxuICAgICAgICByZXR1cm4gQ29tbW9uLmNoZWNrQ29tcG9zaXRpb25JbnRlZ3JpdHkoZDAsIGQxLCB7IFwiMVwiOiB7IGE6IHt9IH0gfSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZSh0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBwaXQoXCJUZXN0cyBBZ2dyZWdhdGlvbiB3aXRoIFJlcGxhY2VJbk9iamVjdCAoMilcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlcGxhY2VJbk9iamVjdChcIjFcIiwgW1wiYVwiXSwgXCJiXCIsIHsgYzogMSB9KTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXCJhXCIsIFwiYlwiXSwgXCJjXCIsIFwiZFwiKTtcblxuICAgICAgICB2YXIgZGVsdGEgPSBQVUxDb21wb3NpdGlvbi5jb21wb3NlKGQwLCBkMSwgdHJ1ZSk7XG5cbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDApO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZXBsYWNlSW5PYmplY3QubGVuZ3RoKS50b0JlKDEpO1xuICAgICAgICBleHBlY3QoXG4gICAgICAgICAgICBDb21tb24uaXNFcXVhbChkZWx0YS51ZHBzLnJlcGxhY2VJbk9iamVjdFswXS5pdGVtLCB7IGQ6IDEgfSlcbiAgICAgICAgKS50b0JlKHRydWUpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYTogeyBiOiAxIH0gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3QgQWdncmVnYXRpb24gd2l0aCBSZW5hbWVJbk9iamVjdCAoMSlcIiwgKCkgPT4ge1xuICAgICAgICB2YXIgZDAgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQwLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXSwgXCJhXCIsIFwiYlwiKTtcblxuICAgICAgICB2YXIgZDEgPSBuZXcgUFVMKCk7XG4gICAgICAgIGQxLnJlbmFtZUluT2JqZWN0KFwiMVwiLCBbXCJiXCJdLCBcImNcIiwgXCJkXCIpO1xuXG4gICAgICAgIHZhciBkZWx0YSA9IFBVTENvbXBvc2l0aW9uLmNvbXBvc2UoZDAsIGQxLCB0cnVlKTtcbiAgICAgICAgZXhwZWN0KGRlbHRhLnVkcHMucmVuYW1lSW5PYmplY3QubGVuZ3RoKS50b0JlKDIpO1xuXG4gICAgICAgIHJldHVybiBDb21tb24uY2hlY2tDb21wb3NpdGlvbkludGVncml0eShkMCwgZDEsIHsgXCIxXCI6IHsgYTogeyBjOiAxIH0gfSB9KS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHBpdChcIlRlc3QgQWNjdW11bGF0aW9uICgxKVwiLCAoKSA9PiB7XG4gICAgICAgIHZhciBkMCA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDAucmVuYW1lSW5PYmplY3QoXCIxXCIsIFtdLCBcImFcIiwgXCJ6XCIpO1xuXG4gICAgICAgIHZhciBkMSA9IG5ldyBQVUwoKTtcbiAgICAgICAgZDEucmVuYW1lSW5PYmplY3QoXCIxXCIsIFtcImJcIl0sIFwiY1wiLCBcImRcIik7XG5cbiAgICAgICAgdmFyIGRlbHRhID0gUFVMQ29tcG9zaXRpb24uY29tcG9zZShkMCwgZDEsIHRydWUpO1xuICAgICAgICBleHBlY3QoZGVsdGEudWRwcy5yZW5hbWVJbk9iamVjdC5sZW5ndGgpLnRvQmUoMik7XG5cbiAgICAgICAgcmV0dXJuIENvbW1vbi5jaGVja0NvbXBvc2l0aW9uSW50ZWdyaXR5KGQwLCBkMSwgeyBcIjFcIjogeyBiOiB7IGM6IDEgfSwgYTogMSB9IH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmUodHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG59KTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==