PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-xtz/dist/test/unit

Просмотр файла: transaction.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const should_1 = __importDefault(require("should"));
const statics_1 = require("@bitgo/statics");
const resources_1 = require("../resources");
const src_1 = require("../../src");
describe('Tezos transaction', function () {
    describe('should parse', () => {
        it('unsigned transaction', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromSerializedTransaction(resources_1.unsignedSerializedOriginationTransaction);
            should_1.default.equal(tx.inputs.length, 1);
            tx.inputs.length.should.equal(1);
            tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
            tx.inputs[0].value.should.equal('1004764');
            tx.outputs.length.should.equal(1);
            tx.outputs[0].address.should.equal('');
            tx.outputs[0].value.should.equal('1000000');
            should_1.default.not.exist(tx.delegate);
            JSON.stringify(tx.toJson()).should.equal(JSON.stringify(resources_1.parsedTransaction));
            tx.toBroadcastFormat().should.equal(resources_1.unsignedSerializedOriginationTransaction);
        });
        it('signed transaction', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromSerializedTransaction(resources_1.signedSerializedOriginationTransaction);
            should_1.default.equal(tx.inputs.length, 1);
            tx.inputs.length.should.equal(1);
            tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
            tx.inputs[0].value.should.equal('1004764');
            tx.outputs.length.should.equal(1);
            tx.outputs[0].address.should.equal('KT1LJvp55fbdNwbisJFign9wA4cPgq9T9oc4');
            tx.outputs[0].value.should.equal('1000000');
            should_1.default.not.exist(tx.delegate);
            JSON.stringify(tx.toJson()).should.equal(JSON.stringify(resources_1.parsedTransaction));
            tx.toBroadcastFormat().should.equal(resources_1.signedSerializedOriginationTransaction);
        });
    });
    describe('should sign', () => {
        it('an unsigned origination transaction', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromSerializedTransaction(resources_1.unsignedSerializedOriginationTransaction);
            const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
            await tx.sign(signer);
            should_1.default.equal(tx.inputs.length, 1);
            tx.inputs.length.should.equal(1);
            tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
            tx.inputs[0].value.should.equal('1004764');
            tx.outputs.length.should.equal(1);
            tx.outputs[0].address.should.equal('KT1Dh62qPZhJvMMtL4rAnDS2uASptT6GNLMy');
            tx.outputs[0].value.should.equal('1000000');
            should_1.default.not.exist(tx.delegate);
            tx.signature.length.should.equal(1);
            tx.signature[0].should.equal('sigu3cjQh8rf79aXG555fRxKzuTa2byZnvMJqkJENpdKjEwCri6SUM9fLywDC3w8e6dHRT8RRaJVQiijC9yzwqL6FSm2Jj9a');
        });
        it('a signed origination transaction', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromSerializedTransaction(resources_1.signedSerializedOriginationTransaction);
            const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
            await tx.sign(signer);
            should_1.default.equal(tx.inputs.length, 1);
            tx.inputs.length.should.equal(1);
            tx.inputs[0].address.should.equal('tz1VRjRpVKnv16AVprFH1tkDn4TDfVqA893A');
            tx.inputs[0].value.should.equal('1004764');
            tx.outputs.length.should.equal(1);
            tx.outputs[0].address.should.equal('KT1Dh62qPZhJvMMtL4rAnDS2uASptT6GNLMy');
            tx.outputs[0].value.should.equal('1000000');
            should_1.default.not.exist(tx.delegate);
            tx.signature.length.should.equal(1);
            tx.signature[0].should.equal('sigu3cjQh8rf79aXG555fRxKzuTa2byZnvMJqkJENpdKjEwCri6SUM9fLywDC3w8e6dHRT8RRaJVQiijC9yzwqL6FSm2Jj9a');
        });
    });
    describe('should fail', () => {
        it('to parse and invalid parsed transaction', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromParsedTransaction({}).should.be.rejected();
        });
        it('to get the transaction JSON if it is empty', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            assert_1.default.throws(() => tx.toJson());
        });
        it('to sign if the transaction is empty', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            const signer = new src_1.XtzLib.KeyPair({ prv: 'spsk2cbiVsAvpGKmau9XcMscL3NRwjkyT575N5AyAofcoj41x6g6TL' });
            await tx.sign(signer).should.be.rejectedWith('Empty transaction');
        });
        it('to sign the transaction if the keys are invalid', async () => {
            const tx = new src_1.XtzLib.Transaction(statics_1.coins.get('txtz'));
            await tx.initFromParsedTransaction(resources_1.parsedTransaction);
            const signer = new src_1.XtzLib.KeyPair({ pub: 'sppk7ZWB8diU2TWehxdkWCV2DTFvn1hPz4qLjiD3nJQozKnoSEnSC8b' });
            await tx.sign(signer).should.be.rejectedWith('Missing private key');
        });
    });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLDRDQUF1QztBQUN2Qyw0Q0FJc0I7QUFDdEIsbUNBQW1DO0FBRW5DLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtRQUM1QixFQUFFLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDcEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFNLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQyxvREFBd0MsQ0FBQyxDQUFDO1lBRWpGLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDM0MsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUs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S0FBSyxJQUFJLEVBQUU7WUFDL0QsTUFBTSxFQUFFLEdBQUcsSUFBSSxZQUFNLENBQUMsV0FBVyxDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNyRCxNQUFNLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQyw2QkFBaUIsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSx5REFBeUQsRUFBRSxDQUFDLENBQUM7WUFDdEcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQge1xuICB1bnNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uLFxuICBzaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbixcbiAgcGFyc2VkVHJhbnNhY3Rpb24sXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBYdHpMaWIgfSBmcm9tICcuLi8uLi9zcmMnO1xuXG5kZXNjcmliZSgnVGV6b3MgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdzaG91bGQgcGFyc2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Vuc2lnbmVkIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHh0eicpKTtcbiAgICAgIGF3YWl0IHR4LmluaXRGcm9tU2VyaWFsaXplZFRyYW5zYWN0aW9uKHVuc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuXG4gICAgICBzaG91bGQuZXF1YWwodHguaW5wdXRzLmxlbmd0aCwgMSk7XG4gICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LmlucHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgndHoxVlJqUnBWS252MTZBVnByRkgxdGtEbjRURGZWcUE4OTNBJyk7XG4gICAgICB0eC5pbnB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDA0NzY0Jyk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCcnKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KHR4LmRlbGVnYXRlKTtcbiAgICAgIEpTT04uc3RyaW5naWZ5KHR4LnRvSnNvbigpKS5zaG91bGQuZXF1YWwoSlNPTi5zdHJpbmdpZnkocGFyc2VkVHJhbnNhY3Rpb24pKTtcbiAgICAgIHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHVuc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NpZ25lZCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFh0ekxpYi5UcmFuc2FjdGlvbihjb2lucy5nZXQoJ3R4dHonKSk7XG4gICAgICBhd2FpdCB0eC5pbml0RnJvbVNlcmlhbGl6ZWRUcmFuc2FjdGlvbihzaWduZWRTZXJpYWxpemVkT3JpZ2luYXRpb25UcmFuc2FjdGlvbik7XG5cbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMUxKdnA1NWZiZE53YmlzSkZpZ245d0E0Y1BncTlUOW9jNCcpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgSlNPTi5zdHJpbmdpZnkodHgudG9Kc29uKCkpLnNob3VsZC5lcXVhbChKU09OLnN0cmluZ2lmeShwYXJzZWRUcmFuc2FjdGlvbikpO1xuICAgICAgdHgudG9Ccm9hZGNhc3RGb3JtYXQoKS5zaG91bGQuZXF1YWwoc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2hvdWxkIHNpZ24nLCAoKSA9PiB7XG4gICAgaXQoJ2FuIHVuc2lnbmVkIG9yaWdpbmF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHh0eicpKTtcbiAgICAgIGF3YWl0IHR4LmluaXRGcm9tU2VyaWFsaXplZFRyYW5zYWN0aW9uKHVuc2lnbmVkU2VyaWFsaXplZE9yaWdpbmF0aW9uVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBzaWduZXIgPSBuZXcgWHR6TGliLktleVBhaXIoeyBwcnY6ICdzcHNrMmNiaVZzQXZwR0ttYXU5WGNNc2NMM05Sd2preVQ1NzVONUF5QW9mY29qNDF4Nmc2VEwnIH0pO1xuICAgICAgYXdhaXQgdHguc2lnbihzaWduZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LmlucHV0cy5sZW5ndGgsIDEpO1xuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5pbnB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ3R6MVZSalJwVktudjE2QVZwckZIMXRrRG40VERmVnFBODkzQScpO1xuICAgICAgdHguaW5wdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwNDc2NCcpO1xuICAgICAgdHgub3V0cHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHgub3V0cHV0c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbCgnS1QxRGg2MnFQWmhKdk1NdEw0ckFuRFMydUFTcHRUNkdOTE15Jyk7XG4gICAgICB0eC5vdXRwdXRzWzBdLnZhbHVlLnNob3VsZC5lcXVhbCgnMTAwMDAwMCcpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0eC5kZWxlZ2F0ZSk7XG4gICAgICB0eC5zaWduYXR1cmUubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4LnNpZ25hdHVyZVswXS5zaG91bGQuZXF1YWwoXG4gICAgICAgICdzaWd1M2NqUWg4cmY3OWFYRzU1NWZSeEt6dVRhMmJ5Wm52TUpxa0pFTnBkS2pFd0NyaTZTVU05Zkx5d0RDM3c4ZTZkSFJUOFJSYUpWUWlpakM5eXp3cUw2RlNtMkpqOWEnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2Egc2lnbmVkIG9yaWdpbmF0aW9uIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHh0eicpKTtcbiAgICAgIGF3YWl0IHR4LmluaXRGcm9tU2VyaWFsaXplZFRyYW5zYWN0aW9uKHNpZ25lZFNlcmlhbGl6ZWRPcmlnaW5hdGlvblRyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3Qgc2lnbmVyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KTtcbiAgICAgIGF3YWl0IHR4LnNpZ24oc2lnbmVyKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eC5pbnB1dHMubGVuZ3RoLCAxKTtcbiAgICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgdHguaW5wdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKCd0ejFWUmpScFZLbnYxNkFWcHJGSDF0a0RuNFREZlZxQTg5M0EnKTtcbiAgICAgIHR4LmlucHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDQ3NjQnKTtcbiAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHR4Lm91dHB1dHNbMF0uYWRkcmVzcy5zaG91bGQuZXF1YWwoJ0tUMURoNjJxUFpoSnZNTXRMNHJBbkRTMnVBU3B0VDZHTkxNeScpO1xuICAgICAgdHgub3V0cHV0c1swXS52YWx1ZS5zaG91bGQuZXF1YWwoJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QodHguZGVsZWdhdGUpO1xuICAgICAgdHguc2lnbmF0dXJlLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICB0eC5zaWduYXR1cmVbMF0uc2hvdWxkLmVxdWFsKFxuICAgICAgICAnc2lndTNjalFoOHJmNzlhWEc1NTVmUnhLenVUYTJieVpudk1KcWtKRU5wZEtqRXdDcmk2U1VNOWZMeXdEQzN3OGU2ZEhSVDhSUmFKVlFpaWpDOXl6d3FMNkZTbTJKajlhJ1xuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3Nob3VsZCBmYWlsJywgKCkgPT4ge1xuICAgIGl0KCd0byBwYXJzZSBhbmQgaW52YWxpZCBwYXJzZWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXdhaXQgdHguaW5pdEZyb21QYXJzZWRUcmFuc2FjdGlvbih7fSBhcyBYdHpMaWIuSW50ZXJmYWNlLlBhcnNlZFRyYW5zYWN0aW9uKS5zaG91bGQuYmUucmVqZWN0ZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCd0byBnZXQgdGhlIHRyYW5zYWN0aW9uIEpTT04gaWYgaXQgaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgYXNzZXJ0LnRocm93cygoKSA9PiB0eC50b0pzb24oKSk7XG4gICAgfSk7XG5cbiAgICBpdCgndG8gc2lnbiBpZiB0aGUgdHJhbnNhY3Rpb24gaXMgZW1wdHknLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eCA9IG5ldyBYdHpMaWIuVHJhbnNhY3Rpb24oY29pbnMuZ2V0KCd0eHR6JykpO1xuICAgICAgY29uc3Qgc2lnbmVyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHJ2OiAnc3BzazJjYmlWc0F2cEdLbWF1OVhjTXNjTDNOUndqa3lUNTc1TjVBeUFvZmNvajQxeDZnNlRMJyB9KTtcbiAgICAgIGF3YWl0IHR4LnNpZ24oc2lnbmVyKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3RvIHNpZ24gdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBrZXlzIGFyZSBpbnZhbGlkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBuZXcgWHR6TGliLlRyYW5zYWN0aW9uKGNvaW5zLmdldCgndHh0eicpKTtcbiAgICAgIGF3YWl0IHR4LmluaXRGcm9tUGFyc2VkVHJhbnNhY3Rpb24ocGFyc2VkVHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3Qgc2lnbmVyID0gbmV3IFh0ekxpYi5LZXlQYWlyKHsgcHViOiAnc3BwazdaV0I4ZGlVMlRXZWh4ZGtXQ1YyRFRGdm4xaFB6NHFMamlEM25KUW96S25vU0VuU0M4YicgfSk7XG4gICAgICBhd2FpdCB0eC5zaWduKHNpZ25lcikuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!