@glimmer/compiler
Advanced tools
Comparing version 0.28.3 to 0.29.0
@@ -158,4 +158,5 @@ "use strict"; | ||
let blocks = this.template.block.blocks; | ||
(0, _util.assert)(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
(0, _util.assert)(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
false && (0, _util.assert)(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
false && (0, _util.assert)(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
this.push([_wireFormat.Ops.Block, name, params, hash, blocks[template], blocks[inverse]]); | ||
@@ -269,3 +270,4 @@ } | ||
let component = this.blocks.pop(); | ||
(0, _util.assert)(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
false && (0, _util.assert)(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
return component.toJSON(); | ||
@@ -281,3 +283,4 @@ } | ||
prepareObject(size) { | ||
(0, _util.assert)(this.values.length >= size, `Expected ${size} values on the stack, found ${this.values.length}`); | ||
false && (0, _util.assert)(this.values.length >= size, `Expected ${size} values on the stack, found ${this.values.length}`); | ||
let keys = new Array(size); | ||
@@ -302,3 +305,4 @@ let values = new Array(size); | ||
popValue() { | ||
(0, _util.assert)(this.values.length, "No expression found on stack"); | ||
false && (0, _util.assert)(this.values.length, "No expression found on stack"); | ||
return this.values.pop(); | ||
@@ -312,2 +316,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBQ3ZDLEFBQU8sQUFBRSxBQUFLLEFBQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJL0QsQUFBTyxBQUlMLEFBQVUsQUFHVixBQUFHLEFBQ0osQUFBTSxBQUFzQixBQUFDLEFBUTlCLEFBQU07OztrQkFDRzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDO0FBSEMsQUFBSTtTQUFDLEFBQW9CLFdBQ3ZCLEFBQUk7YUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDLEFBQUMsQUFDRjtBQUVELEFBQU07QUFWTjs7TUFVeUIsb0JBQVEsQUFBSztnQkFDakIsQUFBdUIsT0FDeEMsQUFBSyxBQUFFLEFBQUM7QUFEUzthQUFLLFFBQUwsQUFBSyxBQUFrQixBQUUxQyxBQUFDO0FBRUQsQUFBTTthQUNKLEFBQU07O3dCQUNRLEFBQUksS0FBQyxBQUFVLEFBQzNCLEFBQVU7d0JBQUUsQUFBSSxLQUFDLEFBQUssTUFGakIsQUFFa0IsQUFBSyxBQUM3QixBQUFDLEFBQ0osQUFBQyxBQUNGO0FBSkssQUFBVTtBQU1oQixBQUFNO0FBWko7O01BWXlCLHNCQUFRLEFBQUs7Z0JBT2xCLEFBQStCLGFBQ2pELEFBQUssQUFBRSxBQUFDO0FBRFU7YUFBVyxjQU54QixBQU1hLEFBQVcsQUFBb0I7YUFOeEMsT0FBRyxBQUFVLEFBQUMsQUFDbEI7YUFBTSxTQUFHLEFBQUksQUFBTyxBQUFVLEFBQUMsQUFDL0I7YUFBSyxRQUFHLEFBQUksQUFBTyxBQUFVLEFBQUMsQUFDOUI7YUFBTSxT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Y2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGFjaywgRGljdFNldCwgT3B0aW9uLCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNUIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vdGVtcGxhdGUtdmlzaXRvcic7XG5cbmltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBDb3JlLFxuICBTdGF0ZW1lbnQsXG4gIFN0YXRlbWVudHMsXG4gIEV4cHJlc3Npb24sXG4gIEV4cHJlc3Npb25zLFxuICBPcHNcbn0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBzdHIgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbmV4cG9ydCB0eXBlIEhhc2ggPSBDb3JlLkhhc2g7XG5leHBvcnQgdHlwZSBQYXRoID0gQ29yZS5QYXRoO1xuZXhwb3J0IHR5cGUgU3RhY2tWYWx1ZSA9IEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoIHwgc3RyO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2sge1xuICBwdWJsaWMgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcblxuICBhYnN0cmFjdCB0b0pTT04oKTogT2JqZWN0O1xuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgdHlwZSA9IFwidGVtcGxhdGVcIjtcbiAgcHVibGljIHlpZWxkcyA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgYmxvY2tzOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9ja1tdID0gW107XG4gIHB1YmxpYyBoYXNFdmFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeW1ib2xUYWJsZTogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3ltYm9sczogdGhpcy5zeW1ib2xUYWJsZS5zeW1ib2xzLFxuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBTdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG4gIHB1YmxpYyBhcmd1bWVudHM6IFN0YXRlbWVudHMuQXJndW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGluUGFyYW1zID0gdHJ1ZTtcbiAgcHVibGljIHBvc2l0aW9uYWxzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEJsb2NrU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBFbGVtZW50IG1vZGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gY29tcG9uZW50cycpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmFyZ3VtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBdHRyaWJ1dGUoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmd1bWVudHM7XG4gICAgbGV0IGtleXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzFdKTtcbiAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLFxuICAgICAgW2tleXMsIHZhbHVlc10sXG4gICAgICB7XG4gICAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgfVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIHtcbiAgcHVibGljIGJsb2NrOiBUZW1wbGF0ZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMuYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jayhzeW1ib2xzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2sudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgc3RhdGljIHByb2Nlc3Mob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyKG9wY29kZXMsIHN5bWJvbHMpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgU3RhY2s8QmxvY2s+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W107XG4gIHByaXZhdGUgdmFsdWVzOiBTdGFja1ZhbHVlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcGNvZGVzOiBhbnlbXSwgc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRCbG9jaygpOiBCbG9jayB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2Nrcy5jdXJyZW50LCAnRXhwZWN0ZWQgYSBibG9jayBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoKTogVGVtcGxhdGUge1xuICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHsgdGhyb3cgbmV3IEVycm9yKGB1bmltcGxlbWVudGVkICR7b3Bjb2RlfSBvbiBKYXZhU2NyaXB0Q29tcGlsZXJgKTsgfVxuICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gIH1cblxuICAvLy8gTmVzdGluZ1xuXG4gIHN0YXJ0QmxvY2soW3Byb2dyYW1dOiBbQVNULlByb2dyYW1dKSB7XG4gICAgbGV0IGJsb2NrOiBCbG9jayA9IG5ldyBJbmxpbmVCbG9jayhwcm9ncmFtWydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICBsZXQgYmxvY2sgPSBibG9ja3MucG9wKCkgYXMgSW5saW5lQmxvY2s7XG4gICAgdGVtcGxhdGUuYmxvY2suYmxvY2tzLnB1c2goYmxvY2sudG9KU09OKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICB9XG5cbiAgYXBwZW5kKHRydXN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKSwgdHJ1c3RlZF0pO1xuICB9XG5cbiAgY29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQ29tbWVudCwgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIGJsb2NrKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgbGV0IGJsb2NrcyA9IHRoaXMudGVtcGxhdGUuYmxvY2suYmxvY2tzO1xuICAgIGFzc2VydCh0eXBlb2YgdGVtcGxhdGUgIT09ICdudW1iZXInIHx8IGJsb2Nrc1t0ZW1wbGF0ZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcblxuICAgIHRoaXMucHVzaChbT3BzLkJsb2NrLCBuYW1lLCBwYXJhbXMsIGhhc2gsIGJsb2Nrc1t0ZW1wbGF0ZV0sIGJsb2Nrc1tpbnZlcnNlXV0pO1xuICB9XG5cbiAgb3BlblNwbGF0dGVkRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAuLi5hdHRyaWJ1dGVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gZWxlbWVudGApO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5PcGVuU3BsYXR0ZWRFbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhpcy5zdGFydENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgbGV0IFthdHRycywgYXJncywgYmxvY2tdID0gdGhpcy5lbmRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNvbXBvbmVudCwgdGFnLCBhdHRycywgYXJncywgYmxvY2tdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHRydXN0aW5nQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlRydXN0aW5nQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgc3RhdGljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gIH1cblxuICBkeW5hbWljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgeWllbGQodG86IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5ZaWVsZCwgdG8sIHBhcmFtc10pO1xuICB9XG5cbiAgYXR0clNwbGF0KHRvOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goW09wcy5BdHRyU3BsYXQsIHRvXSk7XG4gIH1cblxuICBkZWJ1Z2dlcihldmFsSW5mbzogQ29yZS5FdmFsSW5mbykge1xuICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9jaz4oW09wcy5IYXNCbG9jaywgbmFtZV0pO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXM+KFtPcHMuSGFzQmxvY2tQYXJhbXMsIG5hbWVdKTtcbiAgfVxuXG4gIHBhcnRpYWwoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnNcblxuICBsaXRlcmFsKHZhbHVlOiBFeHByZXNzaW9ucy5WYWx1ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5VbmRlZmluZWQ+KFtPcHMuVW5kZWZpbmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdW5rbm93bihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Vbmtub3duPihbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgfVxuXG4gIGdldChoZWFkOiBudW1iZXIsIHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuR2V0PihbT3BzLkdldCwgaGVhZCwgcGF0aF0pO1xuICB9XG5cbiAgbWF5YmVMb2NhbChwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLk1heWJlTG9jYWw+KFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICB9XG5cbiAgY29uY2F0KCkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkNvbmNhdD4oW09wcy5Db25jYXQsIHRoaXMucG9wVmFsdWU8UGFyYW1zPigpXSk7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGVscGVyPihbT3BzLkhlbHBlciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG5cbiAgc3RhcnRDb21wb25lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goY29tcG9uZW50KTtcbiAgfVxuXG4gIGVuZENvbXBvbmVudCgpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmJsb2Nrcy5wb3AoKTtcbiAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgIHJldHVybiAoY29tcG9uZW50IGFzIENvbXBvbmVudEJsb2NrKS50b0pTT04oKTtcbiAgfVxuXG4gIHByZXBhcmVBcnJheShzaXplOiBudW1iZXIpIHtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkgYXMgRXhwcmVzc2lvbik7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8UGFyYW1zPih2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZTxzdHI+KCk7XG4gICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8SGFzaD4oW2tleXMsIHZhbHVlc10pO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIHB1c2goYXJnczogU3RhdGVtZW50KSB7XG4gICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRCbG9jay5wdXNoKGFyZ3MpO1xuICB9XG5cbiAgcHVzaFZhbHVlPFMgZXh0ZW5kcyBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaD4odmFsOiBTKSB7XG4gICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICB9XG5cbiAgcG9wVmFsdWU8VCBleHRlbmRzIFN0YWNrVmFsdWU+KCk6IFQge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCkgYXMgVDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBvbmVudCh0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgb3BlbiA9IHRhZy5jaGFyQXQoMCk7XG5cbiAgcmV0dXJuIG9wZW4gPT09IG9wZW4udG9VcHBlckNhc2UoKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBQ3ZDLEFBQU8sQUFBRSxBQUFLLEFBQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJL0QsQUFBTyxBQUlMLEFBQVUsQUFHVixBQUFHLEFBQ0osQUFBTSxBQUFzQixBQUFDLEFBUTlCLEFBQU07OztrQkFDRzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDO0FBSEMsQUFBSTtTQUFDLEFBQW9CLFdBQ3ZCLEFBQUk7YUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDLEFBQUMsQUFDRjtBQUVELEFBQU07QUFWTjs7TUFVeUIsb0JBQVEsQUFBSztnQkFDakIsQUFBdUIsT0FDeEMsQUFBSyxBQUFFLEFBQUM7QUFEUzthQUFLLFFBQUwsQUFBSyxBQUFrQixBQUUxQyxBQUFDO0FBRUQsQUFBTTthQUNKLEFBQU07O3dCQUNRLEFBQUksS0FBQyxBQUFVLEFBQzNCLEFBQVU7d0JBQUUsQUFBSSxLQUFDLEFBQUssTUFGakIsQUFFa0IsQUFBSyxBQUM3QixBQUFDLEFBQ0osQUFBQyxBQUNGO0FBSkssQUFBVTtBQU1oQixBQUFNO0FBWko7O01BWXlCLHNCQUFRLEFBQUs7Z0JBT2xCLEFBQStCLGFBQ2pELEFBQUssQUFBRSxBQUFDO0FBRFU7YUFBVyxjQU54QixBQU1hLEFBQVcsQUFBb0I7YUFOeEMsT0FBRyxBQUFVLEFBQUMsQUFDbEI7YUFBTSxTQUFHLEFBQUksQUFBTyxBQUFVLEFBQUMsQUFDL0I7YUFBSyxRQUFHLEFBQUksQUFBTyxBQUFVLEFBQUMsQUFDOUI7YUFBTSxT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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIE9wdGlvbiwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBCbG9ja1N5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUgfSBmcm9tICcuL3RlbXBsYXRlLXZpc2l0b3InO1xuXG5pbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgQ29yZSxcbiAgU3RhdGVtZW50LFxuICBTdGF0ZW1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9ucyxcbiAgT3BzXG59IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUGFyYW1zID0gQ29yZS5QYXJhbXM7XG5leHBvcnQgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbmV4cG9ydCB0eXBlIFN0YWNrVmFsdWUgPSBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaCB8IHN0cjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrIHtcbiAgcHVibGljIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG5cbiAgYWJzdHJhY3QgdG9KU09OKCk6IE9iamVjdDtcblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0YWJsZTogQmxvY2tTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0b0pTT04oKTogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIHR5cGUgPSBcInRlbXBsYXRlXCI7XG4gIHB1YmxpYyB5aWVsZHMgPSBuZXcgRGljdFNldDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBuYW1lZCA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIGJsb2NrczogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2tbXSA9IFtdO1xuICBwdWJsaWMgaGFzRXZhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sVGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN5bWJvbHM6IHRoaXMuc3ltYm9sVGFibGUuc3ltYm9scyxcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGhhc0V2YWw6IHRoaXMuaGFzRXZhbFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgYXR0cmlidXRlczogU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuICBwdWJsaWMgYXJndW1lbnRzOiBTdGF0ZW1lbnRzLkFyZ3VtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBpblBhcmFtcyA9IHRydWU7XG4gIHB1YmxpYyBwb3NpdGlvbmFsczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICBpZiAodGhpcy5pblBhcmFtcykge1xuICAgICAgaWYgKFN0YXRlbWVudHMuaXNNb2RpZmllcihzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHMnKTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0FyZ3VtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hcmd1bWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXR0cmlidXRlKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIGxldCBrZXlzID0gYXJncy5tYXAoYXJnID0+IGFyZ1sxXSk7XG4gICAgbGV0IHZhbHVlcyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMl0pO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuYXR0cmlidXRlcyxcbiAgICAgIFtrZXlzLCB2YWx1ZXNdLFxuICAgICAge1xuICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSB7XG4gIHB1YmxpYyBibG9jazogVGVtcGxhdGVCbG9jaztcblxuICBjb25zdHJ1Y3RvcihzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICB0aGlzLmJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soc3ltYm9scyk7XG4gIH1cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmJsb2NrLnRvSlNPTigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gIHN0YXRpYyBwcm9jZXNzKG9wY29kZXM6IGFueVtdLCBzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpOiBUZW1wbGF0ZSB7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcihvcGNvZGVzLCBzeW1ib2xzKTtcbiAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgYmxvY2tzID0gbmV3IFN0YWNrPEJsb2NrPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdO1xuICBwcml2YXRlIHZhbHVlczogU3RhY2tWYWx1ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShzeW1ib2xzKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50QmxvY2soKTogQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKCk6IFRlbXBsYXRlIHtcbiAgICB0aGlzLm9wY29kZXMuZm9yRWFjaCgoW29wY29kZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tvcGNvZGVdKSB7IHRocm93IG5ldyBFcnJvcihgdW5pbXBsZW1lbnRlZCAke29wY29kZX0gb24gSmF2YVNjcmlwdENvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbb3Bjb2RlXSguLi5hcmdzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlO1xuICB9XG5cbiAgLy8vIE5lc3RpbmdcblxuICBzdGFydEJsb2NrKFtwcm9ncmFtXTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIGxldCBibG9jazogQmxvY2sgPSBuZXcgSW5saW5lQmxvY2socHJvZ3JhbVsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIGxldCB7IHRlbXBsYXRlLCBibG9ja3MgfSA9IHRoaXM7XG4gICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpIGFzIElubGluZUJsb2NrO1xuICAgIHRlbXBsYXRlLmJsb2NrLmJsb2Nrcy5wdXNoKGJsb2NrLnRvSlNPTigpKTtcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcblxuICB9XG5cbiAgLy8vIFN0YXRlbWVudHNcblxuICB0ZXh0KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLlRleHQsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXBwZW5kLCB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCksIHRydXN0ZWRdKTtcbiAgfVxuXG4gIGNvbW1lbnQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gIH1cblxuICBtb2RpZmllcihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5Nb2RpZmllciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICBibG9jayhuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBudW1iZXIsIGludmVyc2U6IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICBhc3NlcnQodHlwZW9mIHRlbXBsYXRlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbdGVtcGxhdGVdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICBhc3NlcnQodHlwZW9mIGludmVyc2UgIT09ICdudW1iZXInIHx8IGJsb2Nrc1tpbnZlcnNlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5CbG9jaywgbmFtZSwgcGFyYW1zLCBoYXNoLCBibG9ja3NbdGVtcGxhdGVdLCBibG9ja3NbaW52ZXJzZV1dKTtcbiAgfVxuXG4gIG9wZW5TcGxhdHRlZEVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogLi4uYXR0cmlidXRlcyBjYW4gb25seSBiZSB1c2VkIGluIGFuIGVsZW1lbnRgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlblNwbGF0dGVkRWxlbWVudCwgdGFnXSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIGxldCBbYXR0cnMsIGFyZ3MsIGJsb2NrXSA9IHRoaXMuZW5kQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnB1c2goW09wcy5Db21wb25lbnQsIHRhZywgYXR0cnMsIGFyZ3MsIGJsb2NrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNsb3NlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICB0cnVzdGluZ0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHN0YXRpY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgZHluYW1pY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgfVxuXG4gIHlpZWxkKHRvOiBudW1iZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuWWllbGQsIHRvLCBwYXJhbXNdKTtcbiAgfVxuXG4gIGF0dHJTcGxhdCh0bzogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXR0clNwbGF0LCB0b10pO1xuICB9XG5cbiAgZGVidWdnZXIoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICB0aGlzLnB1c2goW09wcy5EZWJ1Z2dlciwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2s+KFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrUGFyYW1zPihbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gIH1cblxuICBwYXJ0aWFsKGV2YWxJbmZvOiBDb3JlLkV2YWxJbmZvKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlBhcnRpYWwsIHBhcmFtc1swXSwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zXG5cbiAgbGl0ZXJhbCh2YWx1ZTogRXhwcmVzc2lvbnMuVmFsdWUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5kZWZpbmVkPihbT3BzLlVuZGVmaW5lZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5WYWx1ZT4odmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVua25vd24obmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5rbm93bj4oW09wcy5Vbmtub3duLCBuYW1lXSk7XG4gIH1cblxuICBnZXQoaGVhZDogbnVtYmVyLCBwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkdldD4oW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgfVxuXG4gIG1heWJlTG9jYWwocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5NYXliZUxvY2FsPihbT3BzLk1heWJlTG9jYWwsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Db25jYXQ+KFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKV0pO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhlbHBlcj4oW09wcy5IZWxwZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuXG4gIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QmxvY2soZWxlbWVudFsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gIH1cblxuICBlbmRDb21wb25lbnQoKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5ibG9ja3MucG9wKCk7XG4gICAgYXNzZXJ0KGNvbXBvbmVudCBpbnN0YW5jZW9mIENvbXBvbmVudEJsb2NrLCBcIkNvbXBpbGVyIGJ1ZzogZW5kQ29tcG9uZW50KCkgc2hvdWxkIGVuZCBhIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gKGNvbXBvbmVudCBhcyBDb21wb25lbnRCbG9jaykudG9KU09OKCk7XG4gIH1cblxuICBwcmVwYXJlQXJyYXkoc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpIGFzIEV4cHJlc3Npb24pO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPFBhcmFtcz4odmFsdWVzKTtcbiAgfVxuXG4gIHByZXBhcmVPYmplY3Qoc2l6ZTogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcblxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShzaXplKTtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWU8c3RyPigpO1xuICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPEhhc2g+KFtrZXlzLCB2YWx1ZXNdKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBwdXNoKGFyZ3M6IFN0YXRlbWVudCkge1xuICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgIGFyZ3MucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgfVxuXG4gIHB1c2hWYWx1ZTxTIGV4dGVuZHMgRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2g+KHZhbDogUykge1xuICAgIHRoaXMudmFsdWVzLnB1c2godmFsKTtcbiAgfVxuXG4gIHBvcFZhbHVlPFQgZXh0ZW5kcyBTdGFja1ZhbHVlPigpOiBUIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpIGFzIFQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wb25lbnQodGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IG9wZW4gPSB0YWcuY2hhckF0KDApO1xuXG4gIHJldHVybiBvcGVuID09PSBvcGVuLnRvVXBwZXJDYXNlKCk7XG59XG4iXX0= |
@@ -281,3 +281,4 @@ "use strict"; | ||
let param = params[i]; | ||
(0, _util.assert)(this[param.type], `Unimplemented ${param.type} on TemplateCompiler`); | ||
false && (0, _util.assert)(this[param.type], `Unimplemented ${param.type} on TemplateCompiler`); | ||
this[param.type](param); | ||
@@ -295,3 +296,4 @@ } | ||
let { key, value } = pairs[i]; | ||
(0, _util.assert)(this[value.type], `Unimplemented ${value.type} on TemplateCompiler`); | ||
false && (0, _util.assert)(this[value.type], `Unimplemented ${value.type} on TemplateCompiler`); | ||
this[value.type](value); | ||
@@ -428,2 +430,2 @@ this.opcode('literal', null, key); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUF3QyxBQUFNLEFBQW9CLEFBQUM7Ozs7QUFDMUUsQUFBTyxBQUFnQyxBQUFNLEFBQXVCLEFBQUM7Ozs7QUFDckUsQUFBTyxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUN0QyxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDL0MsQUFBTyxBQUFPLEFBQVMsQUFBRSxBQUFXLEFBQUUsQUFBTSxBQUFpQixBQUFDOztBQUM5RCxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQVMsQUFBQzs7OztBQU8zQyx3QkFBd0IsQUFBVSxPQUNoQyxBQUFNO1dBQUMsQUFBSyxNQUFDLEFBQU8sWUFBSyxBQUFTLGFBQUksQ0FBQyxBQUFLLE1BQUMsQUFBTyxBQUFDLEFBQ3ZELEFBQUM7QUFFRCxBQUFNLEFBQUMsQUFBTzs7Z0JBaUJBLEFBQXVCLFNBTjNCO2FBQVUsYUFBRyxBQUFDLEFBQUMsQUFDZjthQUFXLGNBQWEsQUFBRSxBQUFDLEFBQzNCO2FBQVcsY0FBRyxBQUFJLEFBQUssQUFBZSxBQUFDLEFBQ3ZDO2FBQU8sVUFBVSxBQUFFLEFBQUMsQUFDcEI7YUFBVyxjQUFHLEFBQUssQUFBQyxBQUcxQixBQUFJO2FBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0IsQUFBQztBQWxCRCxBQUFNO1dBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0IsS0FDdEQ7WUFBSSxBQUFlLGtCQUFHLEFBQUksQUFBZSxBQUFFLEFBQUMsQUFDNUMsQUFBZTt3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFFM0I7WUFBSSxBQUFR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S0FBQyxBQUFLLE1BQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxHQUFDLEFBQUMsQUFDbEM7Y0FBTSxBQUFJLEFBQVcsQUFBQyxBQUE0QyxzRUFBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDckYsQUFBQztBQUVELEFBQUUsQUFBQztRQUFDLEFBQU0sT0FBQyxBQUFNLFdBQUssQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUN4QixBQUFNO2VBQUMsQUFBUyxBQUFDLEFBQ25CLEFBQUMsQUFBQyxBQUFJO1dBQUMsQUFBQyxBQUNOO2NBQU0sQUFBSSxBQUFXLEFBQUMsQUFBaUQsMkVBQUUsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFGLEFBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSwgQWN0aW9uIH0gZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciwgeyBUZW1wbGF0ZSB9IGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IGFzc2VydCwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCwgaXNMaXRlcmFsLCBTeW50YXhFcnJvciB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgbWV0YTogT3BhcXVlO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZS5lc2NhcGVkICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLmVzY2FwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlQ29tcGlsZXIge1xuICBzdGF0aWMgY29tcGlsZShvcHRpb25zOiBDb21waWxlT3B0aW9ucywgYXN0OiBBU1QuUHJvZ3JhbSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3Mob3Bjb2RlcywgYXN0WydzeW1ib2xzJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9ucztcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBzeW1ib2xTdGFjayA9IG5ldyBTdGFjazxTeW1ib2xUYWJsZT4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgZ2V0IHN5bWJvbHMoKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zeW1ib2xTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBzeW1ib2wgdGFibGUgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnM6IEFjdGlvbltdKTogQWN0aW9uW10ge1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoW25hbWUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbbmFtZV0pIHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkICR7bmFtZX0gb24gVGVtcGxhdGVDb21waWxlcmApOyB9XG4gICAgICAodGhpc1tuYW1lXSBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm9wY29kZXM7XG4gIH1cblxuICBzdGFydFByb2dyYW0ocHJvZ3JhbTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChwcm9ncmFtWzBdWydzeW1ib2xzJ10pO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydFByb2dyYW0nLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkKys7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0QmxvY2snLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkcy5wdXNoKHRoaXMudGVtcGxhdGVJZCAtIDEpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRCbG9jaycsIG51bGwpO1xuICB9XG5cbiAgdGV4dChbYWN0aW9uXTogW0FTVC5UZXh0Tm9kZV0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl06IFtBU1QuQ29tbWVudFN0YXRlbWVudF0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIGxldCBhdHRyaWJ1dGVzID0gYWN0aW9uLmF0dHJpYnV0ZXM7XG4gICAgbGV0IGhhc1NwbGF0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXR0ciA9IGF0dHJpYnV0ZXNbaV07XG4gICAgICBpZiAoYXR0ci5uYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgaGFzU3BsYXQgPSBhdHRyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzU3BsYXQpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuU3BsYXR0ZWRFbGVtZW50JywgYWN0aW9uLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnb3BlbkVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUoW2FjdGlvbi5hdHRyaWJ1dGVzW2ldXSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24ubW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLm1vZGlmaWVyKFthY3Rpb24ubW9kaWZpZXJzW2ldXSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdmbHVzaEVsZW1lbnQnLCBudWxsKTtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2goYWN0aW9uWydzeW1ib2xzJ10pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwsIGFjdGlvbik7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl06IFtBU1QuQXR0ck5vZGVdKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMgJiYgbmFtZSA9PT0gJy4uLmF0dHJpYnV0ZXMnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdhdHRyU3BsYXQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKCdhdHRycycpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXTogW0FTVC5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRdKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGFjdGlvbi5wYXRoLCBhY3Rpb24ubG9jLCAnbW9kaWZpZXInKTtcblxuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0c1swXSk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXTogW0FTVC5NdXN0YWNoZVN0YXRlbWVudF0pIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBhY3Rpb247XG5cbiAgICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9IGVsc2UgaWYgKGlzWWllbGQocGF0aCkpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwocGF0aCkpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBhc3NlcnRWYWxpZFBhcnRpYWwoYWN0aW9uKTtcbiAgICAgIHRoaXMucGFydGlhbChwYXJhbXMsIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc0RlYnVnZ2VyKHBhdGgpKSB7XG4gICAgICBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2UoYWN0aW9uKTtcbiAgICAgIHRoaXMuZGVidWdnZXIoJ2RlYnVnZ2VyJywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL106IFtBU1QuQmxvY2tTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgbGV0IHRlbXBsYXRlSWQgPSB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIGxldCBpbnZlcnNlSWQgPSBhY3Rpb24uaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdibG9jaycsIGFjdGlvbiwgYWN0aW9uLnBhdGgucGFydHNbMF0sIHRlbXBsYXRlSWQsIGludmVyc2VJZCk7XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgYWN0aW9ucywgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBwcm9jZXNzZWQgYWN0aW9uc1xuXG4gIGFyZyhbcGF0aF06IFtBU1QuUGF0aEV4cHJlc3Npb25dKSB7XG4gICAgbGV0IHsgcGFydHM6IFtoZWFkLCAuLi5yZXN0XSB9ID0gcGF0aDtcbiAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xzLmFsbG9jYXRlTmFtZWQoaGVhZCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldCcsIHBhdGgsIHN5bWJvbCwgcmVzdCk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgZXhwciwgcGF0aC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpc0J1aWx0SW5IZWxwZXIocGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByIGFzIEFTVC5DYWxsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJnKHBhdGgpKSB7XG4gICAgICB0aGlzLmFyZyhbcGF0aF0pO1xuICAgIH0gZWxzZSBpZiAoaXNIZWxwZXJJbnZvY2F0aW9uKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgcGF0aC5wYXJ0c1swXSk7XG4gICAgfSBlbHNlIGlmIChwYXRoLnRoaXMpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBwYXRoLnBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzTG9jYWwocGF0aCwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgbGV0IFtoZWFkLCAuLi5wYXJ0c10gPSBwYXRoLnBhcnRzO1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHRoaXMuc3ltYm9scy5nZXQoaGVhZCksIHBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ3Vua25vd24nLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ21heWJlTG9jYWwnLCBleHByLCBwYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3lpZWxkJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayh0bykpO1xuICB9XG5cbiAgZGVidWdnZXIoX25hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLm9wY29kZSgnZGVidWdnZXInLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuQ2FsbCkge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9jaycsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sobmFtZSkpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrUGFyYW1zJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBwYXJ0aWFsKF9wYXJhbXM6IEFTVC5FeHByZXNzaW9uW10sIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCdwYXJ0aWFsJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuZ2V0RXZhbEluZm8oKSk7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcbiAgICBpZiAoaXNIYXNCbG9jayhwYXRoKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcjogQVNULlN1YkV4cHJlc3Npb24pIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIucGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0c1swXSk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcjogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gICAgaWYgKGV4cHIuZGF0YSkge1xuICAgICAgdGhpcy5hcmcoW2V4cHJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgc3ltYm9scyB9ID0gdGhpcztcbiAgICAgIGxldCBbaGVhZF0gPSBleHByLnBhcnRzO1xuXG4gICAgICBpZiAoZXhwci50aGlzKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH0gZWxzZSAgaWYgKHN5bWJvbHMuaGFzKGhlYWQpKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBzeW1ib2xzLmdldChoZWFkKSwgZXhwci5wYXJ0cy5zbGljZSgxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgZXhwci5wYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb246IEFTVC5TdHJpbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYWN0aW9uOiBBU1QuQm9vbGVhbkxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbjogQVNULk51bWJlckxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChhY3Rpb246IEFTVC5OdWxsTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBvcGNvZGUobmFtZTogYW55LCBhY3Rpb246IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGV4cHIucGF0aCwgZXhwci5sb2MsICdoZWxwZXInKTtcblxuICAgIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gZXhwcjtcblxuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtczogQVNULkV4cHJlc3Npb25bXSkge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3BhcmFtLnR5cGVdIGFzIGFueSkocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2g6IEFTVC5IYXNoKSB7XG4gICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICAgIGlmICghcGFpcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcnNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3ZhbHVlLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3ZhbHVlLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3ZhbHVlLnR5cGVdIGFzIGFueSkodmFsdWUpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBrZXkpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlT2JqZWN0JywgbnVsbCwgcGFpcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZTogQVNULkF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHM6IEFTVC5Db25jYXRTdGF0ZW1lbnRbJ3BhcnRzJ10pIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gIH1cblxuICBtZXRhKG5vZGU6IEFTVC5CYXNlTm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVySW52b2NhdGlvbihtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KTogbXVzdGFjaGUgaXMgQVNULk11c3RhY2hlU3RhdGVtZW50ICYgeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24gfSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzU2ltcGxlUGF0aCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uLCBzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3ltYm9scyAmJiAvKiBwYXJ0cy5sZW5ndGggJiYgKi8gc3ltYm9scy5oYXMocGFydHNbMF0pO1xufVxuXG5mdW5jdGlvbiBpc1lpZWxkKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0RlYnVnZ2VyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2RlYnVnZ2VyJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKHBhdGgpIHx8IGlzSGFzQmxvY2tQYXJhbXMocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwYXRoWydkYXRhJ107XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU2ltcGxlUGF0aChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24sIGxvYzogQVNULlNvdXJjZUxvY2F0aW9uLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKCFpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFxcYCR7cGF0aC5vcmlnaW5hbH1cXGAgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAke2NvbnRleHR9IG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCwgcGF0aC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBzdHJpbmcge1xuICBsZXQgeyBwYWlycyB9ID0gc3RhdGVtZW50Lmhhc2g7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChwYWlyc1swXS52YWx1ZSBhcyBBU1QuU3RyaW5nTGl0ZXJhbCkudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSAvKiA6IGV4cHIgKi8ge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlOiBzdHJpbmcsIGNhbGw6IEFTVC5DYWxsKTogc3RyaW5nIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IGNhbGw7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIGNhbGwubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHBhcmFtID0gcGFyYW1zWzBdO1xuICAgIGlmIChwYXJhbS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQUFBTyxBQUF3QyxBQUFNLEFBQW9CLEFBQUM7Ozs7QUFDMUUsQUFBTyxBQUFnQyxBQUFNLEFBQXVCLEFBQUM7Ozs7QUFDckUsQUFBTyxBQUFFLEFBQUssQUFBRSxBQUFNLEFBQWUsQUFBQyxBQUN0QyxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFDL0MsQUFBTyxBQUFPLEFBQVMsQUFBRSxBQUFXLEFBQUUsQUFBTSxBQUFpQixBQUFDOztBQUM5RCxBQUFPLEFBQUUsQUFBZ0IsQUFBRSxBQUFNLEFBQVMsQUFBQzs7OztBQU8zQyx3QkFBd0IsQUFBVSxPQUNoQyxBQUFNO1dBQUMsQUFBSyxNQUFDLEFBQU8sWUFBSyxBQUFTLGFBQUksQ0FBQyxBQUFLLE1BQUMsQUFBTyxBQUFDLEFBQ3ZELEFBQUM7QUFFRCxBQUFNLEFBQUMsQUFBTzs7Z0JBaUJBLEFBQXVCLFNBTjNCO2FBQVUsYUFBRyxBQUFDLEFBQUMsQUFDZjthQUFXLGNBQWEsQUFBRSxBQUFDLEFBQzNCO2FBQVcsY0FBRyxBQUFJLEFBQUssQUFBZSxBQUFDLEFBQ3ZDO2FBQU8sVUFBVSxBQUFFLEFBQUMsQUFDcEI7YUFBVyxjQUFHLEFBQUssQUFBQyxBQUcxQixBQUFJO2FBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0IsQUFBQztBQWxCRCxBQUFNO1dBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0IsS0FDdEQ7WUFBSSxBQUFlLGtCQUFHLEFBQUksQUFBZSxBQUFFLEFBQUMsQUFDNUMsQUFBZTt3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUMsQUFFM0I7WUFBSSxBQUFR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QUksQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFNLFNBQUcsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUNsQztjQUFNLEFBQUksQUFBVyxBQUFDLEFBQTRDLHNFQUFFLEFBQVMsVUFBQyxBQUFHLEFBQUMsQUFBQyxBQUNyRixBQUFDO0FBRUQsQUFBRSxBQUFDO1FBQUMsQUFBTSxPQUFDLEFBQU0sV0FBSyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQ3hCLEFBQU07ZUFBQyxBQUFTLEFBQUMsQUFDbkIsQUFBQyxBQUFDLEFBQUk7V0FBQyxBQUFDLEFBQ047Y0FBTSxBQUFJLEFBQVcsQUFBQyxBQUFpRCwyRUFBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDMUYsQUFBQyxBQUNIO0FBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGVtcGxhdGVWaXNpdG9yLCB7IFN5bWJvbFRhYmxlLCBBY3Rpb24gfSBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgSmF2YVNjcmlwdENvbXBpbGVyLCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4vamF2YXNjcmlwdC1jb21waWxlclwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgYXNzZXJ0LCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNULCBpc0xpdGVyYWwsIFN5bnRheEVycm9yIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IGdldEF0dHJOYW1lc3BhY2UgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJAZ2xpbW1lci9pbnRlcmZhY2VzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsZU9wdGlvbnMge1xuICBtZXRhOiBPcGFxdWU7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1c3RlZFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgcmV0dXJuIHZhbHVlLmVzY2FwZWQgIT09IHVuZGVmaW5lZCAmJiAhdmFsdWUuZXNjYXBlZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVtcGxhdGVDb21waWxlciB7XG4gIHN0YXRpYyBjb21waWxlKG9wdGlvbnM6IENvbXBpbGVPcHRpb25zLCBhc3Q6IEFTVC5Qcm9ncmFtKTogVGVtcGxhdGUge1xuICAgIGxldCB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gICAgdGVtcGxhdGVWaXNpdG9yLnZpc2l0KGFzdCk7XG5cbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgVGVtcGxhdGVDb21waWxlcihvcHRpb25zKTtcbiAgICBsZXQgb3Bjb2RlcyA9IGNvbXBpbGVyLnByb2Nlc3ModGVtcGxhdGVWaXNpdG9yLmFjdGlvbnMpO1xuICAgIHJldHVybiBKYXZhU2NyaXB0Q29tcGlsZXIucHJvY2VzcyhvcGNvZGVzLCBhc3RbJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBwcml2YXRlIG9wdGlvbnM6IENvbXBpbGVPcHRpb25zO1xuICBwcml2YXRlIHRlbXBsYXRlSWQgPSAwO1xuICBwcml2YXRlIHRlbXBsYXRlSWRzOiBudW1iZXJbXSA9IFtdO1xuICBwcml2YXRlIHN5bWJvbFN0YWNrID0gbmV3IFN0YWNrPFN5bWJvbFRhYmxlPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5jbHVkZU1ldGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21waWxlT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICBnZXQgc3ltYm9scygpOiBTeW1ib2xUYWJsZSB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLnN5bWJvbFN0YWNrLmN1cnJlbnQsICdFeHBlY3RlZCBhIHN5bWJvbCB0YWJsZSBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoYWN0aW9uczogQWN0aW9uW10pOiBBY3Rpb25bXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgICh0aGlzW25hbWVdIGFzIGFueSkoLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRQcm9ncmFtJywgbnVsbCk7XG4gIH1cblxuICBzdGFydEJsb2NrKHByb2dyYW06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2gocHJvZ3JhbVswXVsnc3ltYm9scyddKTtcbiAgICB0aGlzLnRlbXBsYXRlSWQrKztcbiAgICB0aGlzLm9wY29kZSgnc3RhcnRCbG9jaycsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLnRlbXBsYXRlSWRzLnB1c2godGhpcy50ZW1wbGF0ZUlkIC0gMSk7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZEJsb2NrJywgbnVsbCk7XG4gIH1cblxuICB0ZXh0KFthY3Rpb25dOiBbQVNULlRleHROb2RlXSkge1xuICAgIHRoaXMub3Bjb2RlKCd0ZXh0JywgYWN0aW9uLCBhY3Rpb24uY2hhcnMpO1xuICB9XG5cbiAgY29tbWVudChbYWN0aW9uXTogW0FTVC5Db21tZW50U3RhdGVtZW50XSkge1xuICAgIHRoaXMub3Bjb2RlKCdjb21tZW50JywgYWN0aW9uLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgb3BlbkVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSBhY3Rpb24uYXR0cmlidXRlcztcbiAgICBsZXQgaGFzU3BsYXQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBhdHRyID0gYXR0cmlidXRlc1tpXTtcbiAgICAgIGlmIChhdHRyLm5hbWUgPT09ICcuLi5hdHRyaWJ1dGVzJykge1xuICAgICAgICBoYXNTcGxhdCA9IGF0dHI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYXNTcGxhdCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ29wZW5TcGxhdHRlZEVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuRWxlbWVudCcsIGFjdGlvbiwgYWN0aW9uKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZShbYWN0aW9uLmF0dHJpYnV0ZXNbaV1dKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5tb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubW9kaWZpZXIoW2FjdGlvbi5tb2RpZmllcnNbaV1dKTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ2ZsdXNoRWxlbWVudCcsIG51bGwpO1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChhY3Rpb25bJ3N5bWJvbHMnXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoW2FjdGlvbl06IFtBU1QuRWxlbWVudE5vZGVdKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnY2xvc2VFbGVtZW50JywgbnVsbCwgYWN0aW9uKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZShbYWN0aW9uXTogW0FTVC5BdHRyTm9kZV0pIHtcbiAgICBsZXQgeyBuYW1lLCB2YWx1ZSB9ID0gYWN0aW9uO1xuXG4gICAgbGV0IG5hbWVzcGFjZSA9IGdldEF0dHJOYW1lc3BhY2UobmFtZSk7XG5cbiAgICBsZXQgaXNTdGF0aWMgPSB0aGlzLnByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICdAJykge1xuICAgICAgLy8gQXJndW1lbnRzXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzVHJ1c3RpbmcgPSBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSk7XG5cbiAgICAgIGlmIChpc1N0YXRpYyAmJiBuYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2F0dHJTcGxhdCcsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2soJ2F0dHJzJykpO1xuICAgICAgfSBlbHNlIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNUcnVzdGluZykge1xuICAgICAgICB0aGlzLm9wY29kZSgndHJ1c3RpbmdBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG1vZGlmaWVyKFthY3Rpb25dOiBbQVNULkVsZW1lbnRNb2RpZmllclN0YXRlbWVudF0pIHtcbiAgICBhc3NlcnRJc1NpbXBsZVBhdGgoYWN0aW9uLnBhdGgsIGFjdGlvbi5sb2MsICdtb2RpZmllcicpO1xuXG4gICAgbGV0IHsgcGF0aDogeyBwYXJ0cyB9IH0gPSBhY3Rpb247XG5cbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICB0aGlzLm9wY29kZSgnbW9kaWZpZXInLCBhY3Rpb24sIHBhcnRzWzBdKTtcbiAgfVxuXG4gIG11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIGxldCB7IHBhdGggfSA9IGFjdGlvbjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJywgYWN0aW9uLCAhYWN0aW9uLmVzY2FwZWQpO1xuICAgIH0gZWxzZSBpZiAoaXNZaWVsZChwYXRoKSkge1xuICAgICAgbGV0IHRvID0gYXNzZXJ0VmFsaWRZaWVsZChhY3Rpb24pO1xuICAgICAgdGhpcy55aWVsZCh0bywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzUGFydGlhbChwYXRoKSkge1xuICAgICAgbGV0IHBhcmFtcyA9IGFzc2VydFZhbGlkUGFydGlhbChhY3Rpb24pO1xuICAgICAgdGhpcy5wYXJ0aWFsKHBhcmFtcywgYWN0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGlzRGVidWdnZXIocGF0aCkpIHtcbiAgICAgIGFzc2VydFZhbGlkRGVidWdnZXJVc2FnZShhY3Rpb24pO1xuICAgICAgdGhpcy5kZWJ1Z2dlcignZGVidWdnZXInLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9XG4gIH1cblxuICBibG9jayhbYWN0aW9uLyosIGluZGV4LCBjb3VudCovXTogW0FTVC5CbG9ja1N0YXRlbWVudF0pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0c1swXSwgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXTogW0FTVC5QYXRoRXhwcmVzc2lvbl0pIHtcbiAgICBsZXQgeyBwYXJ0czogW2hlYWQsIC4uLnJlc3RdIH0gPSBwYXRoO1xuICAgIGxldCBzeW1ib2wgPSB0aGlzLnN5bWJvbHMuYWxsb2NhdGVOYW1lZChoZWFkKTtcbiAgICB0aGlzLm9wY29kZSgnZ2V0JywgcGF0aCwgc3ltYm9sLCByZXN0KTtcbiAgfVxuXG4gIG11c3RhY2hlRXhwcmVzc2lvbihleHByOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuXG4gICAgaWYgKGlzTGl0ZXJhbChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBwYXRoLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGlzQnVpbHRJbkhlbHBlcihwYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIgYXMgQVNULkNhbGwpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcocGF0aCkpIHtcbiAgICAgIHRoaXMuYXJnKFtwYXRoXSk7XG4gICAgfSBlbHNlIGlmIChpc0hlbHBlckludm9jYXRpb24oZXhwcikpIHtcbiAgICAgIHRoaXMucHJlcGFyZUhlbHBlcihleHByKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdoZWxwZXInLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2UgaWYgKHBhdGgudGhpcykge1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIHBhdGgucGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNMb2NhbChwYXRoLCB0aGlzLnN5bWJvbHMpKSB7XG4gICAgICBsZXQgW2hlYWQsIC4uLnBhcnRzXSA9IHBhdGgucGFydHM7XG4gICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgdGhpcy5zeW1ib2xzLmdldChoZWFkKSwgcGFydHMpO1xuICAgIH0gZWxzZSBpZiAoaXNTaW1wbGVQYXRoKHBhdGgpKSB7XG4gICAgICB0aGlzLm9wY29kZSgndW5rbm93bicsIGV4cHIsIHBhdGgucGFydHNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnbWF5YmVMb2NhbCcsIGV4cHIsIHBhdGgucGFydHMpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBTeW50YXhcblxuICB5aWVsZCh0bzogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgneWllbGQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKHRvKSk7XG4gIH1cblxuICBkZWJ1Z2dlcihfbmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5NdXN0YWNoZVN0YXRlbWVudCkge1xuICAgIHRoaXMub3Bjb2RlKCdkZWJ1Z2dlcicsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmdldEV2YWxJbmZvKCkpO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBzdHJpbmcsIGFjdGlvbjogQVNULkNhbGwpIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKG5hbWUpKTtcbiAgfVxuXG4gIHBhcnRpYWwoX3BhcmFtczogQVNULkV4cHJlc3Npb25bXSwgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3BhcnRpYWwnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGJ1aWx0SW5IZWxwZXIoZXhwcjogQVNULkNhbGwpIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBleHByO1xuICAgIGlmIChpc0hhc0Jsb2NrKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9jayhuYW1lLCBleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzSGFzQmxvY2tQYXJhbXMocGF0aCkpIHtcbiAgICAgIGxldCBuYW1lID0gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKGV4cHIucGF0aC5vcmlnaW5hbCwgZXhwcik7XG4gICAgICB0aGlzLmhhc0Jsb2NrUGFyYW1zKG5hbWUsIGV4cHIpO1xuICAgIH1cbiAgfVxuXG4gIC8vLyBFeHByZXNzaW9ucywgaW52b2tlZCByZWN1cnNpdmVseSBmcm9tIHByZXBhcmVQYXJhbXMgYW5kIHByZXBhcmVIYXNoXG5cbiAgU3ViRXhwcmVzc2lvbihleHByOiBBU1QuU3ViRXhwcmVzc2lvbikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwci5wYXRoKSkge1xuICAgICAgdGhpcy5idWlsdEluSGVscGVyKGV4cHIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgZXhwci5wYXRoLnBhcnRzWzBdKTtcbiAgICB9XG4gIH1cblxuICBQYXRoRXhwcmVzc2lvbihleHByOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgICBpZiAoZXhwci5kYXRhKSB7XG4gICAgICB0aGlzLmFyZyhbZXhwcl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgeyBzeW1ib2xzIH0gPSB0aGlzO1xuICAgICAgbGV0IFtoZWFkXSA9IGV4cHIucGFydHM7XG5cbiAgICAgIGlmIChleHByLnRoaXMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIDAsIGV4cHIucGFydHMpO1xuICAgICAgfSBlbHNlICBpZiAoc3ltYm9scy5oYXMoaGVhZCkpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHN5bWJvbHMuZ2V0KGhlYWQpLCBleHByLnBhcnRzLnNsaWNlKDEpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbjogQVNULlN0cmluZ0xpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBCb29sZWFuTGl0ZXJhbChhY3Rpb246IEFTVC5Cb29sZWFuTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uOiBBU1QuTnVtYmVyTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bGxMaXRlcmFsKGFjdGlvbjogQVNULk51bGxMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb246IEFTVC5VbmRlZmluZWRMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIG9wY29kZShuYW1lOiBhbnksIGFjdGlvbjogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoZXhwcjogQVNULkNhbGwpIHtcbiAgICBhc3NlcnRJc1NpbXBsZVBhdGgoZXhwci5wYXRoLCBleHByLmxvYywgJ2hlbHBlcicpO1xuXG4gICAgbGV0IHsgcGFyYW1zLCBoYXNoIH0gPSBleHByO1xuXG4gICAgdGhpcy5wcmVwYXJlSGFzaChoYXNoKTtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMocGFyYW1zKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zOiBBU1QuRXhwcmVzc2lvbltdKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgKHRoaXNbcGFyYW0udHlwZV0gYXMgYW55KShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaDogQVNULkhhc2gpIHtcbiAgICBsZXQgcGFpcnMgPSBoYXNoLnBhaXJzO1xuXG4gICAgaWYgKCFwYWlycy5sZW5ndGgpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgbnVsbCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IHBhaXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgeyBrZXksIHZhbHVlIH0gPSBwYWlyc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbdmFsdWUudHlwZV0sIGBVbmltcGxlbWVudGVkICR7dmFsdWUudHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgKHRoaXNbdmFsdWUudHlwZV0gYXMgYW55KSh2YWx1ZSk7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGtleSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVPYmplY3QnLCBudWxsLCBwYWlycy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUF0dHJpYnV0ZVZhbHVlKHZhbHVlOiBBU1QuQXR0ck5vZGVbJ3ZhbHVlJ10pIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0czogQVNULkNvbmNhdFN0YXRlbWVudFsncGFydHMnXSkge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl06IFtBU1QuTXVzdGFjaGVTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgfVxuXG4gIG1ldGEobm9kZTogQVNULkJhc2VOb2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNIZWxwZXJJbnZvY2F0aW9uKG11c3RhY2hlOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBtdXN0YWNoZSBpcyBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQgJiB7IHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbiB9IHtcbiAgcmV0dXJuIChtdXN0YWNoZS5wYXJhbXMgJiYgbXVzdGFjaGUucGFyYW1zLmxlbmd0aCA+IDApIHx8XG4gICAgKG11c3RhY2hlLmhhc2ggJiYgbXVzdGFjaGUuaGFzaC5wYWlycy5sZW5ndGggPiAwKTtcbn1cblxuZnVuY3Rpb24gaXNTaW1wbGVQYXRoKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDE7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYWwoeyBwYXJ0cyB9OiBBU1QuUGF0aEV4cHJlc3Npb24sIHN5bWJvbHM6IFN5bWJvbFRhYmxlKTogYm9vbGVhbiB7XG4gIHJldHVybiBzeW1ib2xzICYmIC8qIHBhcnRzLmxlbmd0aCAmJiAqLyBzeW1ib2xzLmhhcyhwYXJ0c1swXSk7XG59XG5cbmZ1bmN0aW9uIGlzWWllbGQocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAneWllbGQnO1xufVxuXG5mdW5jdGlvbiBpc1BhcnRpYWwocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAncGFydGlhbCc7XG59XG5cbmZ1bmN0aW9uIGlzRGVidWdnZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnZGVidWdnZXInO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jayc7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2tQYXJhbXMocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrLXBhcmFtcyc7XG59XG5cbmZ1bmN0aW9uIGlzQnVpbHRJbkhlbHBlcihwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIGlzSGFzQmxvY2socGF0aCkgfHwgaXNIYXNCbG9ja1BhcmFtcyhwYXRoKTtcbn1cblxuZnVuY3Rpb24gaXNBcmcocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gIHJldHVybiAhIXBhdGhbJ2RhdGEnXTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0SXNTaW1wbGVQYXRoKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbiwgbG9jOiBBU1QuU291cmNlTG9jYXRpb24sIGNvbnRleHQ6IHN0cmluZykge1xuICBpZiAoIWlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgXFxgJHtwYXRoLm9yaWdpbmFsfVxcYCBpcyBub3QgYSB2YWxpZCBuYW1lIGZvciBhICR7Y29udGV4dH0gb24gbGluZSAke2xvYy5zdGFydC5saW5lfS5gLCBwYXRoLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRZaWVsZChzdGF0ZW1lbnQ6IEFTVC5NdXN0YWNoZVN0YXRlbWVudCk6IHN0cmluZyB7XG4gIGxldCB7IHBhaXJzIH0gPSBzdGF0ZW1lbnQuaGFzaDtcblxuICBpZiAoKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS5rZXkgIT09ICd0bycpIHx8IHBhaXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHlpZWxkIG9ubHkgdGFrZXMgYSBzaW5nbGUgbmFtZWQgYXJndW1lbnQ6ICd0bydgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0udmFsdWUudHlwZSAhPT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHBhaXJzWzBdLnZhbHVlIGFzIEFTVC5TdHJpbmdMaXRlcmFsKS52YWx1ZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFBhcnRpYWwoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIC8qIDogZXhwciAqLyB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0gPSBzdGF0ZW1lbnQ7XG5cbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBQYXJ0aWFsIGZvdW5kIHdpdGggbm8gYXJndW1lbnRzLiBZb3UgbXVzdCBzcGVjaWZ5IGEgdGVtcGxhdGUgbmFtZS4gKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHBhcnRpYWwgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKCFlc2NhcGVkKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB7e3twYXJ0aWFsIC4uLn19fSBpcyBub3Qgc3VwcG9ydGVkLCBwbGVhc2UgdXNlIHt7cGFydGlhbCAuLi59fSBpbnN0ZWFkIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKHR5cGU6IHN0cmluZywgY2FsbDogQVNULkNhbGwpOiBzdHJpbmcge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGxvYyB9ID0gY2FsbDtcblxuICBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYCR7dHlwZX0gZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgY2FsbC5sb2MpO1xuICB9XG5cbiAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICB9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgcGFyYW0gPSBwYXJhbXNbMF07XG4gICAgaWYgKHBhcmFtLnR5cGUgPT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgICAgcmV0dXJuIHBhcmFtLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWUgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCwgY2FsbC5sb2MpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYCR7dHlwZX0gb25seSB0YWtlcyBhIHNpbmdsZSBwb3NpdGlvbmFsIGFyZ3VtZW50IChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2Uoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoIH0gPSBzdGF0ZW1lbnQ7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHNgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYGRlYnVnZ2VyIGRvZXMgbm90IHRha2UgYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cbn1cbiJdfQ== |
@@ -254,4 +254,5 @@ "use strict"; | ||
var blocks = this.template.block.blocks; | ||
(0, _util.assert)(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
(0, _util.assert)(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
false && (0, _util.assert)(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
false && (0, _util.assert)(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
this.push([_wireFormat.Ops.Block, name, params, hash, blocks[template], blocks[inverse]]); | ||
@@ -394,3 +395,4 @@ }; | ||
var component = this.blocks.pop(); | ||
(0, _util.assert)(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
false && (0, _util.assert)(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
return component.toJSON(); | ||
@@ -408,3 +410,4 @@ }; | ||
JavaScriptCompiler.prototype.prepareObject = function prepareObject(size) { | ||
(0, _util.assert)(this.values.length >= size, "Expected " + size + " values on the stack, found " + this.values.length); | ||
false && (0, _util.assert)(this.values.length >= size, "Expected " + size + " values on the stack, found " + this.values.length); | ||
var keys = new Array(size); | ||
@@ -433,3 +436,4 @@ var values = new Array(size); | ||
JavaScriptCompiler.prototype.popValue = function popValue() { | ||
(0, _util.assert)(this.values.length, "No expression found on stack"); | ||
false && (0, _util.assert)(this.values.length, "No expression found on stack"); | ||
return this.values.pop(); | ||
@@ -455,2 +459,2 @@ }; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBQ3ZDLEFBQU8sQUFBRSxBQUFLLEFBQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJL0QsQUFBTyxBQUlMLEFBQVUsQUFHVixBQUFHLEFBQ0osQUFBTSxBQUFzQixBQUFDLEFBUTlCLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQU47cUJBQ1M7OzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDLEFBSEMsQUFBSTs7O3lDQUFDLEFBQW9CLFdBQ3ZCLEFBQUk7YUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDLEFBQUMsQUFDRjs7OztBQUVELEFBQU07SUFBbUI7Ozt5QkFDSixBQUF1QixPQUN4QyxBQUFLLEFBQUUsQUFBQzs7O3FEQURTOztjQUFLLFFBQUwsQUFBSyxBQUFrQixBQUUxQyxBQUFDO2VBRUQsQUFBTTs7O3FEQUNKLEFBQU07O3dCQUNRLEFBQUksS0FBQyxBQUFVLEFBQzNCLEFBQVU7d0JBQUUsQUFBSSxLQUFDLEFBQUssTUFGakIsQUFFa0IsQUFBSyxBQUM3QixBQUFDLEFBQ0osQUFBQyxBQUNGLEFBSkssQUFBVTs7Ozs7RUFQaUIsQUFBSyxBQUNwQyxBQVlGLEFBQU07SUFBcUI7OzsyQkFPTCxBQUErQixhQUNqRCxBQUFLLEFBQUUsQUFBQzs7O3NEQURVOztlQUFXLGNBTnhCLEFBTWEsQUFBVyxBQUFvQjtlQU54QyxPQUFHLEFBQVUsQUFBQyxBQUNsQjtlQUFNLFNBQUcsQUFBSSxBQUFPLEFBQVUsQUFBQyxB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RyxBQUFNLEFBQUMsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU8sQUFBRSxBQUErQixBQUFDLEFBQUMsQUFDdEUsQUFBQyxBQUVELEFBQU87Ozs7Ozs7Ozs7QUFvUFQscUJBQXFCLEFBQVcsS0FDOUI7UUFBSSxBQUFJLE9BQUcsQUFBRyxJQUFDLEFBQU0sT0FBQyxBQUFDLEFBQUMsQUFBQyxBQUV6QixBQUFNO1dBQUMsQUFBSSxTQUFLLEFBQUksS0FBQyxBQUFXLEFBQUUsQUFBQyxBQUNyQyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIE9wdGlvbiwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBCbG9ja1N5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUgfSBmcm9tICcuL3RlbXBsYXRlLXZpc2l0b3InO1xuXG5pbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgQ29yZSxcbiAgU3RhdGVtZW50LFxuICBTdGF0ZW1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9ucyxcbiAgT3BzXG59IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUGFyYW1zID0gQ29yZS5QYXJhbXM7XG5leHBvcnQgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbmV4cG9ydCB0eXBlIFN0YWNrVmFsdWUgPSBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaCB8IHN0cjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrIHtcbiAgcHVibGljIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG5cbiAgYWJzdHJhY3QgdG9KU09OKCk6IE9iamVjdDtcblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0YWJsZTogQmxvY2tTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0b0pTT04oKTogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIHR5cGUgPSBcInRlbXBsYXRlXCI7XG4gIHB1YmxpYyB5aWVsZHMgPSBuZXcgRGljdFNldDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBuYW1lZCA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIGJsb2NrczogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2tbXSA9IFtdO1xuICBwdWJsaWMgaGFzRXZhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sVGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN5bWJvbHM6IHRoaXMuc3ltYm9sVGFibGUuc3ltYm9scyxcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGhhc0V2YWw6IHRoaXMuaGFzRXZhbFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgYXR0cmlidXRlczogU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuICBwdWJsaWMgYXJndW1lbnRzOiBTdGF0ZW1lbnRzLkFyZ3VtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBpblBhcmFtcyA9IHRydWU7XG4gIHB1YmxpYyBwb3NpdGlvbmFsczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICBpZiAodGhpcy5pblBhcmFtcykge1xuICAgICAgaWYgKFN0YXRlbWVudHMuaXNNb2RpZmllcihzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHMnKTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0FyZ3VtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hcmd1bWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXR0cmlidXRlKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIGxldCBrZXlzID0gYXJncy5tYXAoYXJnID0+IGFyZ1sxXSk7XG4gICAgbGV0IHZhbHVlcyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMl0pO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuYXR0cmlidXRlcyxcbiAgICAgIFtrZXlzLCB2YWx1ZXNdLFxuICAgICAge1xuICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSB7XG4gIHB1YmxpYyBibG9jazogVGVtcGxhdGVCbG9jaztcblxuICBjb25zdHJ1Y3RvcihzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICB0aGlzLmJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soc3ltYm9scyk7XG4gIH1cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmJsb2NrLnRvSlNPTigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gIHN0YXRpYyBwcm9jZXNzKG9wY29kZXM6IGFueVtdLCBzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpOiBUZW1wbGF0ZSB7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcihvcGNvZGVzLCBzeW1ib2xzKTtcbiAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgYmxvY2tzID0gbmV3IFN0YWNrPEJsb2NrPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdO1xuICBwcml2YXRlIHZhbHVlczogU3RhY2tWYWx1ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShzeW1ib2xzKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50QmxvY2soKTogQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKCk6IFRlbXBsYXRlIHtcbiAgICB0aGlzLm9wY29kZXMuZm9yRWFjaCgoW29wY29kZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tvcGNvZGVdKSB7IHRocm93IG5ldyBFcnJvcihgdW5pbXBsZW1lbnRlZCAke29wY29kZX0gb24gSmF2YVNjcmlwdENvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbb3Bjb2RlXSguLi5hcmdzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlO1xuICB9XG5cbiAgLy8vIE5lc3RpbmdcblxuICBzdGFydEJsb2NrKFtwcm9ncmFtXTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIGxldCBibG9jazogQmxvY2sgPSBuZXcgSW5saW5lQmxvY2socHJvZ3JhbVsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIGxldCB7IHRlbXBsYXRlLCBibG9ja3MgfSA9IHRoaXM7XG4gICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpIGFzIElubGluZUJsb2NrO1xuICAgIHRlbXBsYXRlLmJsb2NrLmJsb2Nrcy5wdXNoKGJsb2NrLnRvSlNPTigpKTtcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcblxuICB9XG5cbiAgLy8vIFN0YXRlbWVudHNcblxuICB0ZXh0KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLlRleHQsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXBwZW5kLCB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCksIHRydXN0ZWRdKTtcbiAgfVxuXG4gIGNvbW1lbnQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gIH1cblxuICBtb2RpZmllcihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5Nb2RpZmllciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICBibG9jayhuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBudW1iZXIsIGludmVyc2U6IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICBhc3NlcnQodHlwZW9mIHRlbXBsYXRlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbdGVtcGxhdGVdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICBhc3NlcnQodHlwZW9mIGludmVyc2UgIT09ICdudW1iZXInIHx8IGJsb2Nrc1tpbnZlcnNlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5CbG9jaywgbmFtZSwgcGFyYW1zLCBoYXNoLCBibG9ja3NbdGVtcGxhdGVdLCBibG9ja3NbaW52ZXJzZV1dKTtcbiAgfVxuXG4gIG9wZW5TcGxhdHRlZEVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogLi4uYXR0cmlidXRlcyBjYW4gb25seSBiZSB1c2VkIGluIGFuIGVsZW1lbnRgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlblNwbGF0dGVkRWxlbWVudCwgdGFnXSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIGxldCBbYXR0cnMsIGFyZ3MsIGJsb2NrXSA9IHRoaXMuZW5kQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnB1c2goW09wcy5Db21wb25lbnQsIHRhZywgYXR0cnMsIGFyZ3MsIGJsb2NrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNsb3NlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICB0cnVzdGluZ0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHN0YXRpY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgZHluYW1pY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgfVxuXG4gIHlpZWxkKHRvOiBudW1iZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuWWllbGQsIHRvLCBwYXJhbXNdKTtcbiAgfVxuXG4gIGF0dHJTcGxhdCh0bzogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXR0clNwbGF0LCB0b10pO1xuICB9XG5cbiAgZGVidWdnZXIoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICB0aGlzLnB1c2goW09wcy5EZWJ1Z2dlciwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2s+KFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrUGFyYW1zPihbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gIH1cblxuICBwYXJ0aWFsKGV2YWxJbmZvOiBDb3JlLkV2YWxJbmZvKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlBhcnRpYWwsIHBhcmFtc1swXSwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zXG5cbiAgbGl0ZXJhbCh2YWx1ZTogRXhwcmVzc2lvbnMuVmFsdWUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5kZWZpbmVkPihbT3BzLlVuZGVmaW5lZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5WYWx1ZT4odmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVua25vd24obmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5rbm93bj4oW09wcy5Vbmtub3duLCBuYW1lXSk7XG4gIH1cblxuICBnZXQoaGVhZDogbnVtYmVyLCBwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkdldD4oW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgfVxuXG4gIG1heWJlTG9jYWwocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5NYXliZUxvY2FsPihbT3BzLk1heWJlTG9jYWwsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Db25jYXQ+KFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKV0pO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhlbHBlcj4oW09wcy5IZWxwZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuXG4gIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QmxvY2soZWxlbWVudFsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gIH1cblxuICBlbmRDb21wb25lbnQoKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5ibG9ja3MucG9wKCk7XG4gICAgYXNzZXJ0KGNvbXBvbmVudCBpbnN0YW5jZW9mIENvbXBvbmVudEJsb2NrLCBcIkNvbXBpbGVyIGJ1ZzogZW5kQ29tcG9uZW50KCkgc2hvdWxkIGVuZCBhIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gKGNvbXBvbmVudCBhcyBDb21wb25lbnRCbG9jaykudG9KU09OKCk7XG4gIH1cblxuICBwcmVwYXJlQXJyYXkoc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpIGFzIEV4cHJlc3Npb24pO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPFBhcmFtcz4odmFsdWVzKTtcbiAgfVxuXG4gIHByZXBhcmVPYmplY3Qoc2l6ZTogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcblxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShzaXplKTtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWU8c3RyPigpO1xuICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPEhhc2g+KFtrZXlzLCB2YWx1ZXNdKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBwdXNoKGFyZ3M6IFN0YXRlbWVudCkge1xuICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgIGFyZ3MucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgfVxuXG4gIHB1c2hWYWx1ZTxTIGV4dGVuZHMgRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2g+KHZhbDogUykge1xuICAgIHRoaXMudmFsdWVzLnB1c2godmFsKTtcbiAgfVxuXG4gIHBvcFZhbHVlPFQgZXh0ZW5kcyBTdGFja1ZhbHVlPigpOiBUIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpIGFzIFQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wb25lbnQodGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IG9wZW4gPSB0YWcuY2hhckF0KDApO1xuXG4gIHJldHVybiBvcGVuID09PSBvcGVuLnRvVXBwZXJDYXNlKCk7XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxBQUFPLEFBQUUsQUFBTSxBQUFFLEFBQU0sQUFBZSxBQUFDLEFBQ3ZDLEFBQU8sQUFBRSxBQUFLLEFBQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxBQUFNLEFBQWUsQUFBQzs7QUFJL0QsQUFBTyxBQUlMLEFBQVUsQUFHVixBQUFHLEFBQ0osQUFBTSxBQUFzQixBQUFDLEFBUTlCLEFBQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQU47cUJBQ1M7OzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDLEFBSEMsQUFBSTs7O3lDQUFDLEFBQW9CLFdBQ3ZCLEFBQUk7YUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDLEFBQUMsQUFDRjs7OztBQUVELEFBQU07SUFBbUI7Ozt5QkFDSixBQUF1QixPQUN4QyxBQUFLLEFBQUUsQUFBQzs7O3FEQURTOztjQUFLLFFBQUwsQUFBSyxBQUFrQixBQUUxQyxBQUFDO2VBRUQsQUFBTTs7O3FEQUNKLEFBQU07O3dCQUNRLEFBQUksS0FBQyxBQUFVLEFBQzNCLEFBQVU7d0JBQUUsQUFBSSxLQUFDLEFBQUssTUFGakIsQUFFa0IsQUFBSyxBQUM3QixBQUFDLEFBQ0osQUFBQyxBQUNGLEFBSkssQUFBVTs7Ozs7RUFQaUIsQUFBSyxBQUNwQyxBQVlGLEFBQU07SUFBcUI7OzsyQkFPTCxBQUErQixhQUNqRCxBQUFLLEFBQUUsQUFBQzs7O3NEQURVOztlQUFXLGNBTnhCLEFBTWEsQUFBVyxBQUFvQjtlQU54QyxPQUFHLEFBQVUsQUFBQyxBQUNsQjtlQUFNLFNBQUcsQUFBSSxBQUFPLEFBQVUsQUFBQyxB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Ozs7OzRCQXJQRyxBQUFNLEFBQUMsQUFBTTttQkFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU8sQUFBRSxBQUErQixBQUFDLEFBQUMsQUFDdEUsQUFBQyxBQUVELEFBQU87Ozs7Ozs7Ozs7QUFvUFQscUJBQXFCLEFBQVcsS0FDOUI7UUFBSSxBQUFJLE9BQUcsQUFBRyxJQUFDLEFBQU0sT0FBQyxBQUFDLEFBQUMsQUFBQyxBQUV6QixBQUFNO1dBQUMsQUFBSSxTQUFLLEFBQUksS0FBQyxBQUFXLEFBQUUsQUFBQyxBQUNyQyxBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgV2lyZUZvcm1hdCBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgU3RhY2ssIERpY3RTZXQsIE9wdGlvbiwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBCbG9ja1N5bWJvbFRhYmxlLCBQcm9ncmFtU3ltYm9sVGFibGUgfSBmcm9tICcuL3RlbXBsYXRlLXZpc2l0b3InO1xuXG5pbXBvcnQge1xuICBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayxcbiAgQ29yZSxcbiAgU3RhdGVtZW50LFxuICBTdGF0ZW1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9ucyxcbiAgT3BzXG59IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUGFyYW1zID0gQ29yZS5QYXJhbXM7XG5leHBvcnQgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbmV4cG9ydCB0eXBlIFN0YWNrVmFsdWUgPSBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaCB8IHN0cjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrIHtcbiAgcHVibGljIHN0YXRlbWVudHM6IFN0YXRlbWVudFtdID0gW107XG5cbiAgYWJzdHJhY3QgdG9KU09OKCk6IE9iamVjdDtcblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5saW5lQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0YWJsZTogQmxvY2tTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0b0pTT04oKTogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIHR5cGUgPSBcInRlbXBsYXRlXCI7XG4gIHB1YmxpYyB5aWVsZHMgPSBuZXcgRGljdFNldDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBuYW1lZCA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIGJsb2NrczogV2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2tbXSA9IFtdO1xuICBwdWJsaWMgaGFzRXZhbCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3ltYm9sVGFibGU6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN5bWJvbHM6IHRoaXMuc3ltYm9sVGFibGUuc3ltYm9scyxcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGhhc0V2YWw6IHRoaXMuaGFzRXZhbFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudEJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgYXR0cmlidXRlczogU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSA9IFtdO1xuICBwdWJsaWMgYXJndW1lbnRzOiBTdGF0ZW1lbnRzLkFyZ3VtZW50W10gPSBbXTtcbiAgcHJpdmF0ZSBpblBhcmFtcyA9IHRydWU7XG4gIHB1YmxpYyBwb3NpdGlvbmFsczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICBpZiAodGhpcy5pblBhcmFtcykge1xuICAgICAgaWYgKFN0YXRlbWVudHMuaXNNb2RpZmllcihzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogRWxlbWVudCBtb2RpZmllcnMgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBvbmVudHMnKTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0ZsdXNoRWxlbWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuaW5QYXJhbXMgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0FyZ3VtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hcmd1bWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXR0cmlidXRlKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ29tcGlsZSBFcnJvcjogb25seSBwYXJhbWV0ZXJzIGFsbG93ZWQgYmVmb3JlIGZsdXNoLWVsZW1lbnQnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuYXJndW1lbnRzO1xuICAgIGxldCBrZXlzID0gYXJncy5tYXAoYXJnID0+IGFyZ1sxXSk7XG4gICAgbGV0IHZhbHVlcyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMl0pO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuYXR0cmlidXRlcyxcbiAgICAgIFtrZXlzLCB2YWx1ZXNdLFxuICAgICAge1xuICAgICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICAgIH1cbiAgICBdO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZSB7XG4gIHB1YmxpYyBibG9jazogVGVtcGxhdGVCbG9jaztcblxuICBjb25zdHJ1Y3RvcihzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICB0aGlzLmJsb2NrID0gbmV3IFRlbXBsYXRlQmxvY2soc3ltYm9scyk7XG4gIH1cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sge1xuICAgIHJldHVybiB0aGlzLmJsb2NrLnRvSlNPTigpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEphdmFTY3JpcHRDb21waWxlciB7XG4gIHN0YXRpYyBwcm9jZXNzKG9wY29kZXM6IGFueVtdLCBzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpOiBUZW1wbGF0ZSB7XG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IEphdmFTY3JpcHRDb21waWxlcihvcGNvZGVzLCBzeW1ib2xzKTtcbiAgICByZXR1cm4gY29tcGlsZXIucHJvY2VzcygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZTogVGVtcGxhdGU7XG4gIHByaXZhdGUgYmxvY2tzID0gbmV3IFN0YWNrPEJsb2NrPigpO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdO1xuICBwcml2YXRlIHZhbHVlczogU3RhY2tWYWx1ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3Iob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMub3Bjb2RlcyA9IG9wY29kZXM7XG4gICAgdGhpcy50ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZShzeW1ib2xzKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50QmxvY2soKTogQmxvY2sge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5ibG9ja3MuY3VycmVudCwgJ0V4cGVjdGVkIGEgYmxvY2sgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKCk6IFRlbXBsYXRlIHtcbiAgICB0aGlzLm9wY29kZXMuZm9yRWFjaCgoW29wY29kZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tvcGNvZGVdKSB7IHRocm93IG5ldyBFcnJvcihgdW5pbXBsZW1lbnRlZCAke29wY29kZX0gb24gSmF2YVNjcmlwdENvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbb3Bjb2RlXSguLi5hcmdzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlO1xuICB9XG5cbiAgLy8vIE5lc3RpbmdcblxuICBzdGFydEJsb2NrKFtwcm9ncmFtXTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIGxldCBibG9jazogQmxvY2sgPSBuZXcgSW5saW5lQmxvY2socHJvZ3JhbVsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGJsb2NrKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIGxldCB7IHRlbXBsYXRlLCBibG9ja3MgfSA9IHRoaXM7XG4gICAgbGV0IGJsb2NrID0gYmxvY2tzLnBvcCgpIGFzIElubGluZUJsb2NrO1xuICAgIHRlbXBsYXRlLmJsb2NrLmJsb2Nrcy5wdXNoKGJsb2NrLnRvSlNPTigpKTtcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbSgpIHtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKHRoaXMudGVtcGxhdGUuYmxvY2spO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcblxuICB9XG5cbiAgLy8vIFN0YXRlbWVudHNcblxuICB0ZXh0KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLlRleHQsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXBwZW5kLCB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCksIHRydXN0ZWRdKTtcbiAgfVxuXG4gIGNvbW1lbnQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaChbT3BzLkNvbW1lbnQsIHZhbHVlXSk7XG4gIH1cblxuICBtb2RpZmllcihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5Nb2RpZmllciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICBibG9jayhuYW1lOiBzdHJpbmcsIHRlbXBsYXRlOiBudW1iZXIsIGludmVyc2U6IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIGxldCBibG9ja3MgPSB0aGlzLnRlbXBsYXRlLmJsb2NrLmJsb2NrcztcbiAgICBhc3NlcnQodHlwZW9mIHRlbXBsYXRlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbdGVtcGxhdGVdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcbiAgICBhc3NlcnQodHlwZW9mIGludmVyc2UgIT09ICdudW1iZXInIHx8IGJsb2Nrc1tpbnZlcnNlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG5cbiAgICB0aGlzLnB1c2goW09wcy5CbG9jaywgbmFtZSwgcGFyYW1zLCBoYXNoLCBibG9ja3NbdGVtcGxhdGVdLCBibG9ja3NbaW52ZXJzZV1dKTtcbiAgfVxuXG4gIG9wZW5TcGxhdHRlZEVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogLi4uYXR0cmlidXRlcyBjYW4gb25seSBiZSB1c2VkIGluIGFuIGVsZW1lbnRgKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlblNwbGF0dGVkRWxlbWVudCwgdGFnXSk7XG4gICAgfVxuICB9XG5cbiAgb3BlbkVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIHRoaXMuc3RhcnRDb21wb25lbnQoZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5FbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuRmx1c2hFbGVtZW50XSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IHRhZyA9IGVsZW1lbnQudGFnO1xuXG4gICAgaWYgKGlzQ29tcG9uZW50KHRhZykpIHtcbiAgICAgIGxldCBbYXR0cnMsIGFyZ3MsIGJsb2NrXSA9IHRoaXMuZW5kQ29tcG9uZW50KCk7XG4gICAgICB0aGlzLnB1c2goW09wcy5Db21wb25lbnQsIHRhZywgYXR0cnMsIGFyZ3MsIGJsb2NrXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNsb3NlRWxlbWVudF0pO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICB0cnVzdGluZ0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5UcnVzdGluZ0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHN0YXRpY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgZHluYW1pY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgfVxuXG4gIHlpZWxkKHRvOiBudW1iZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuWWllbGQsIHRvLCBwYXJhbXNdKTtcbiAgfVxuXG4gIGF0dHJTcGxhdCh0bzogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQXR0clNwbGF0LCB0b10pO1xuICB9XG5cbiAgZGVidWdnZXIoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICB0aGlzLnB1c2goW09wcy5EZWJ1Z2dlciwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2s+KFtPcHMuSGFzQmxvY2ssIG5hbWVdKTtcbiAgfVxuXG4gIGhhc0Jsb2NrUGFyYW1zKG5hbWU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrUGFyYW1zPihbT3BzLkhhc0Jsb2NrUGFyYW1zLCBuYW1lXSk7XG4gIH1cblxuICBwYXJ0aWFsKGV2YWxJbmZvOiBDb3JlLkV2YWxJbmZvKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlBhcnRpYWwsIHBhcmFtc1swXSwgZXZhbEluZm9dKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLmhhc0V2YWwgPSB0cnVlO1xuICB9XG5cbiAgLy8vIEV4cHJlc3Npb25zXG5cbiAgbGl0ZXJhbCh2YWx1ZTogRXhwcmVzc2lvbnMuVmFsdWUgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5kZWZpbmVkPihbT3BzLlVuZGVmaW5lZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5WYWx1ZT4odmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVua25vd24obmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVW5rbm93bj4oW09wcy5Vbmtub3duLCBuYW1lXSk7XG4gIH1cblxuICBnZXQoaGVhZDogbnVtYmVyLCBwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkdldD4oW09wcy5HZXQsIGhlYWQsIHBhdGhdKTtcbiAgfVxuXG4gIG1heWJlTG9jYWwocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5NYXliZUxvY2FsPihbT3BzLk1heWJlTG9jYWwsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Db25jYXQ+KFtPcHMuQ29uY2F0LCB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKV0pO1xuICB9XG5cbiAgaGVscGVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhlbHBlcj4oW09wcy5IZWxwZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgLy8vIFN0YWNrIE1hbmFnZW1lbnQgT3Bjb2Rlc1xuXG4gIHN0YXJ0Q29tcG9uZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCBjb21wb25lbnQgPSBuZXcgQ29tcG9uZW50QmxvY2soZWxlbWVudFsnc3ltYm9scyddKTtcbiAgICB0aGlzLmJsb2Nrcy5wdXNoKGNvbXBvbmVudCk7XG4gIH1cblxuICBlbmRDb21wb25lbnQoKTogW1dpcmVGb3JtYXQuU3RhdGVtZW50cy5BdHRyaWJ1dGVbXSwgV2lyZUZvcm1hdC5Db3JlLkhhc2gsIE9wdGlvbjxXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jaz5dIHtcbiAgICBsZXQgY29tcG9uZW50ID0gdGhpcy5ibG9ja3MucG9wKCk7XG4gICAgYXNzZXJ0KGNvbXBvbmVudCBpbnN0YW5jZW9mIENvbXBvbmVudEJsb2NrLCBcIkNvbXBpbGVyIGJ1ZzogZW5kQ29tcG9uZW50KCkgc2hvdWxkIGVuZCBhIGNvbXBvbmVudFwiKTtcbiAgICByZXR1cm4gKGNvbXBvbmVudCBhcyBDb21wb25lbnRCbG9jaykudG9KU09OKCk7XG4gIH1cblxuICBwcmVwYXJlQXJyYXkoc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlczogRXhwcmVzc2lvbltdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgdmFsdWVzLnB1c2godGhpcy5wb3BWYWx1ZSgpIGFzIEV4cHJlc3Npb24pO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPFBhcmFtcz4odmFsdWVzKTtcbiAgfVxuXG4gIHByZXBhcmVPYmplY3Qoc2l6ZTogbnVtYmVyKSB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCA+PSBzaXplLCBgRXhwZWN0ZWQgJHtzaXplfSB2YWx1ZXMgb24gdGhlIHN0YWNrLCBmb3VuZCAke3RoaXMudmFsdWVzLmxlbmd0aH1gKTtcblxuICAgIGxldCBrZXlzOiBzdHJpbmdbXSA9IG5ldyBBcnJheShzaXplKTtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAga2V5c1tpXSA9IHRoaXMucG9wVmFsdWU8c3RyPigpO1xuICAgICAgdmFsdWVzW2ldID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIH1cblxuICAgIHRoaXMucHVzaFZhbHVlPEhhc2g+KFtrZXlzLCB2YWx1ZXNdKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBwdXNoKGFyZ3M6IFN0YXRlbWVudCkge1xuICAgIHdoaWxlIChhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPT09IG51bGwpIHtcbiAgICAgIGFyZ3MucG9wKCk7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50QmxvY2sucHVzaChhcmdzKTtcbiAgfVxuXG4gIHB1c2hWYWx1ZTxTIGV4dGVuZHMgRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2g+KHZhbDogUykge1xuICAgIHRoaXMudmFsdWVzLnB1c2godmFsKTtcbiAgfVxuXG4gIHBvcFZhbHVlPFQgZXh0ZW5kcyBTdGFja1ZhbHVlPigpOiBUIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoLCBcIk5vIGV4cHJlc3Npb24gZm91bmQgb24gc3RhY2tcIik7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLnBvcCgpIGFzIFQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21wb25lbnQodGFnOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IG9wZW4gPSB0YWcuY2hhckF0KDApO1xuXG4gIHJldHVybiBvcGVuID09PSBvcGVuLnRvVXBwZXJDYXNlKCk7XG59XG4iXX0= |
@@ -145,4 +145,5 @@ import { assert } from "@glimmer/util"; | ||
let blocks = this.template.block.blocks; | ||
assert(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
assert(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
(false && assert(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler')); | ||
(false && assert(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler')); | ||
this.push([Ops.Block, name, params, hash, blocks[template], blocks[inverse]]); | ||
@@ -256,3 +257,4 @@ } | ||
let component = this.blocks.pop(); | ||
assert(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
(false && assert(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component")); | ||
return component.toJSON(); | ||
@@ -268,3 +270,4 @@ } | ||
prepareObject(size) { | ||
assert(this.values.length >= size, `Expected ${size} values on the stack, found ${this.values.length}`); | ||
(false && assert(this.values.length >= size, `Expected ${size} values on the stack, found ${this.values.length}`)); | ||
let keys = new Array(size); | ||
@@ -289,3 +292,4 @@ let values = new Array(size); | ||
popValue() { | ||
assert(this.values.length, "No expression found on stack"); | ||
(false && assert(this.values.length, "No expression found on stack")); | ||
return this.values.pop(); | ||
@@ -298,2 +302,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUM7QUFDdkMsQUFBTyxTQUFFLEFBQUssT0FBRSxBQUFPLEFBQVUsQUFBTSxBQUFFLGVBQU0sQUFBZSxBQUFDO0FBSS9ELEFBQU8sU0FJTCxBQUFVLFlBR1YsQUFBRyxBQUNKLFdBQU0sQUFBc0IsQUFBQztBQVE5QixBQUFNO0FBQU47QUFDUyxhQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QztBQUFDO0FBSEMsQUFBSSxTQUFDLEFBQW9CO0FBQ3ZCLEFBQUksYUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDO0FBQUMsQUFDRjs7QUFFRCxBQUFNLGFBQW1CLG9CQUFRLEFBQUs7QUFDcEMsZ0JBQW1CLEFBQXVCO0FBQ3hDLEFBQUssQUFBRSxBQUFDO0FBRFMsYUFBSyxRQUFMLEFBQUssQUFBa0IsQUFFMUM7QUFBQztBQUVELEFBQU07QUFDSixBQUFNO0FBQ0osQUFBVSx3QkFBRSxBQUFJLEtBQUMsQUFBVTtBQUMzQixBQUFVLHdCQUFFLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUM3QixBQUFDLEFBQ0o7QUFKUztBQUlSLEFBQ0Y7O0FBRUQsQUFBTSxhQUFxQixzQkFBUSxBQUFLO0FBT3RDLGdCQUFvQixBQUErQjtBQUNqRCxBQUFLLEFBQUUsQUFBQztBQURVLGFBQVcsY0FBWCxBQUFXLEFBQW9CO0FBTjVDLGFBQUksT0FBRyxBQUFVLEFBQUM7QUFDbEIsYUFBTSxTQUFHLElBQUksQUFBTyxBQUFVLEFBQUM7QUFDL0IsYUFBSyxRQUFHLElBQUksQUFBTyxBQUFVLEFBQUM7QUFDOUIsYUFBTSxTQUF1QyxBQUFF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QyxJQUFJLEFBQUMsSUFBRyxBQUFDLEdBQUUsQUFBQyxJQUFHLEFBQUksTUFBRSxBQUFDLEFBQUUsS0FBRSxBQUFDO0FBQzlCLEFBQUksaUJBQUMsQUFBQyxBQUFDLEtBQUcsQUFBSSxLQUFDLEFBQVEsQUFBTyxBQUFDO0FBQy9CLEFBQU0sbUJBQUMsQUFBQyxBQUFDLEtBQUcsQUFBSSxLQUFDLEFBQVEsQUFBYyxBQUFDLEFBQzFDO0FBQUM7QUFFRCxBQUFJLGFBQUMsQUFBUyxVQUFPLENBQUMsQUFBSSxNQUFFLEFBQU0sQUFBQyxBQUFDLEFBQUMsQUFDdkM7QUFBQztBQUVELEFBQWE7QUFFYixBQUFJLFNBQUMsQUFBZTtBQUNsQixlQUFPLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBTSxTQUFHLEFBQUMsQUFBQyxPQUFLLEFBQUksTUFBRSxBQUFDO0FBQ3RDLEFBQUksaUJBQUMsQUFBRyxBQUFFLEFBQUMsQUFDYjtBQUFDO0FBRUQsQUFBSSxhQUFDLEFBQVksYUFBQyxBQUFJLEtBQUMsQUFBSSxBQUFDLEFBQUMsQUFDL0I7QUFBQztBQUVELEFBQVMsY0FBdUMsQUFBTTtBQUNwRCxBQUFJLGFBQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFHLEFBQUMsQUFBQyxBQUN4QjtBQUFDO0FBRUQsQUFBUTtBQUNOLEFBQU0sZUFBQyxBQUFJLEtBQUMsQUFBTSxPQUFDLEFBQU0sUUFBRSxBQUE4QixBQUFDLEFBQUM7QUFDM0QsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBRyxBQUFPLEFBQUMsQUFDaEM7QUFBQyxBQUNGOztBQUVELHFCQUFxQixBQUFXO0FBQzlCLFFBQUksQUFBSSxPQUFHLEFBQUcsSUFBQyxBQUFNLE9BQUMsQUFBQyxBQUFDLEFBQUM7QUFFekIsQUFBTSxXQUFDLEFBQUksU0FBSyxBQUFJLEtBQUMsQUFBVyxBQUFFLEFBQUMsQUFDckM7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0LCBPcHRpb24sIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBBU1QgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgQmxvY2tTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlIH0gZnJvbSAnLi90ZW1wbGF0ZS12aXNpdG9yJztcblxuaW1wb3J0IHtcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIENvcmUsXG4gIFN0YXRlbWVudCxcbiAgU3RhdGVtZW50cyxcbiAgRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbnMsXG4gIE9wc1xufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIHN0ciA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFBhcmFtcyA9IENvcmUuUGFyYW1zO1xuZXhwb3J0IHR5cGUgSGFzaCA9IENvcmUuSGFzaDtcbmV4cG9ydCB0eXBlIFBhdGggPSBDb3JlLlBhdGg7XG5leHBvcnQgdHlwZSBTdGFja1ZhbHVlID0gRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2ggfCBzdHI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9jayB7XG4gIHB1YmxpYyBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSA9IFtdO1xuXG4gIGFic3RyYWN0IHRvSlNPTigpOiBPYmplY3Q7XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFibGU6IEJsb2NrU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgdG9KU09OKCk6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0ZW1wbGF0ZVwiO1xuICBwdWJsaWMgeWllbGRzID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgRGljdFNldDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBibG9ja3M6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrW10gPSBbXTtcbiAgcHVibGljIGhhc0V2YWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gIH1cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzeW1ib2xzOiB0aGlzLnN5bWJvbFRhYmxlLnN5bWJvbHMsXG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBoYXNFdmFsOiB0aGlzLmhhc0V2YWxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIGF0dHJpYnV0ZXM6IFN0YXRlbWVudHMuQXR0cmlidXRlW10gPSBbXTtcbiAgcHVibGljIGFyZ3VtZW50czogU3RhdGVtZW50cy5Bcmd1bWVudFtdID0gW107XG4gIHByaXZhdGUgaW5QYXJhbXMgPSB0cnVlO1xuICBwdWJsaWMgcG9zaXRpb25hbHM6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogQmxvY2tTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgaWYgKHRoaXMuaW5QYXJhbXMpIHtcbiAgICAgIGlmIChTdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzJyk7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBcmd1bWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuYXJndW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0F0dHJpYnV0ZShzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IG9ubHkgcGFyYW1ldGVycyBhbGxvd2VkIGJlZm9yZSBmbHVzaC1lbGVtZW50Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IFtXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10sIFdpcmVGb3JtYXQuQ29yZS5IYXNoLCBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+XSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3VtZW50cztcbiAgICBsZXQga2V5cyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMV0pO1xuICAgIGxldCB2YWx1ZXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzJdKTtcblxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmF0dHJpYnV0ZXMsXG4gICAgICBba2V5cywgdmFsdWVzXSxcbiAgICAgIHtcbiAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGUge1xuICBwdWJsaWMgYmxvY2s6IFRlbXBsYXRlQmxvY2s7XG5cbiAgY29uc3RydWN0b3Ioc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgdGhpcy5ibG9jayA9IG5ldyBUZW1wbGF0ZUJsb2NrKHN5bWJvbHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKYXZhU2NyaXB0Q29tcGlsZXIge1xuICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzOiBhbnlbXSwgc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKTogVGVtcGxhdGUge1xuICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2Rlcywgc3ltYm9scyk7XG4gICAgcmV0dXJuIGNvbXBpbGVyLnByb2Nlc3MoKTtcbiAgfVxuXG4gIHByaXZhdGUgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGJsb2NrcyA9IG5ldyBTdGFjazxCbG9jaz4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXTtcbiAgcHJpdmF0ZSB2YWx1ZXM6IFN0YWNrVmFsdWVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKG9wY29kZXM6IGFueVtdLCBzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUoc3ltYm9scyk7XG4gIH1cblxuICBnZXQgY3VycmVudEJsb2NrKCk6IEJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tzLmN1cnJlbnQsICdFeHBlY3RlZCBhIGJsb2NrIG9uIHRoZSBzdGFjaycpO1xuICB9XG5cbiAgcHJvY2VzcygpOiBUZW1wbGF0ZSB7XG4gICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkgeyB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApOyB9XG4gICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vLyBOZXN0aW5nXG5cbiAgc3RhcnRCbG9jayhbcHJvZ3JhbV06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICBsZXQgYmxvY2s6IEJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICBsZXQgeyB0ZW1wbGF0ZSwgYmxvY2tzIH0gPSB0aGlzO1xuICAgIGxldCBibG9jayA9IGJsb2Nrcy5wb3AoKSBhcyBJbmxpbmVCbG9jaztcbiAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9jay50b0pTT04oKSk7XG4gIH1cblxuICBzdGFydFByb2dyYW0oKSB7XG4gICAgdGhpcy5ibG9ja3MucHVzaCh0aGlzLnRlbXBsYXRlLmJsb2NrKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG5cbiAgfVxuXG4gIC8vLyBTdGF0ZW1lbnRzXG5cbiAgdGV4dChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goW09wcy5UZXh0LCBjb250ZW50XSk7XG4gIH1cblxuICBhcHBlbmQodHJ1c3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMucHVzaChbT3BzLkFwcGVuZCwgdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpLCB0cnVzdGVkXSk7XG4gIH1cblxuICBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goW09wcy5Db21tZW50LCB2YWx1ZV0pO1xuICB9XG5cbiAgbW9kaWZpZXIobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFtPcHMuTW9kaWZpZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgYmxvY2sobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogbnVtYmVyLCBpbnZlcnNlOiBudW1iZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICBsZXQgYmxvY2tzID0gdGhpcy50ZW1wbGF0ZS5ibG9jay5ibG9ja3M7XG4gICAgYXNzZXJ0KHR5cGVvZiB0ZW1wbGF0ZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW3RlbXBsYXRlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgYXNzZXJ0KHR5cGVvZiBpbnZlcnNlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbaW52ZXJzZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuXG4gICAgdGhpcy5wdXNoKFtPcHMuQmxvY2ssIG5hbWUsIHBhcmFtcywgaGFzaCwgYmxvY2tzW3RlbXBsYXRlXSwgYmxvY2tzW2ludmVyc2VdXSk7XG4gIH1cblxuICBvcGVuU3BsYXR0ZWRFbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IC4uLmF0dHJpYnV0ZXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBlbGVtZW50YCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5TcGxhdHRlZEVsZW1lbnQsIHRhZ10pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICB0aGlzLnN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnXSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChbT3BzLkZsdXNoRWxlbWVudF0pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICBsZXQgW2F0dHJzLCBhcmdzLCBibG9ja10gPSB0aGlzLmVuZENvbXBvbmVudCgpO1xuICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tcG9uZW50LCB0YWcsIGF0dHJzLCBhcmdzLCBibG9ja10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgZHluYW1pY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgdHJ1c3RpbmdBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuVHJ1c3RpbmdBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBzdGF0aWNBcmcobmFtZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgfVxuXG4gIGR5bmFtaWNBcmcobmFtZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gIH1cblxuICB5aWVsZCh0bzogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbT3BzLllpZWxkLCB0bywgcGFyYW1zXSk7XG4gIH1cblxuICBhdHRyU3BsYXQodG86IG51bWJlcikge1xuICAgIHRoaXMucHVzaChbT3BzLkF0dHJTcGxhdCwgdG9dKTtcbiAgfVxuXG4gIGRlYnVnZ2VyKGV2YWxJbmZvOiBDb3JlLkV2YWxJbmZvKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuRGVidWdnZXIsIGV2YWxJbmZvXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrPihbT3BzLkhhc0Jsb2NrLCBuYW1lXSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9ja1BhcmFtcz4oW09wcy5IYXNCbG9ja1BhcmFtcywgbmFtZV0pO1xuICB9XG5cbiAgcGFydGlhbChldmFsSW5mbzogQ29yZS5FdmFsSW5mbykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5QYXJ0aWFsLCBwYXJhbXNbMF0sIGV2YWxJbmZvXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8vLyBFeHByZXNzaW9uc1xuXG4gIGxpdGVyYWwodmFsdWU6IEV4cHJlc3Npb25zLlZhbHVlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlVuZGVmaW5lZD4oW09wcy5VbmRlZmluZWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVmFsdWU+KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1bmtub3duKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlVua25vd24+KFtPcHMuVW5rbm93biwgbmFtZV0pO1xuICB9XG5cbiAgZ2V0KGhlYWQ6IG51bWJlciwgcGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5HZXQ+KFtPcHMuR2V0LCBoZWFkLCBwYXRoXSk7XG4gIH1cblxuICBtYXliZUxvY2FsKHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuTWF5YmVMb2NhbD4oW09wcy5NYXliZUxvY2FsLCBwYXRoXSk7XG4gIH1cblxuICBjb25jYXQoKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuQ29uY2F0PihbT3BzLkNvbmNhdCwgdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCldKTtcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IZWxwZXI+KFtPcHMuSGVscGVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIC8vLyBTdGFjayBNYW5hZ2VtZW50IE9wY29kZXNcblxuICBzdGFydENvbXBvbmVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJsb2NrKGVsZW1lbnRbJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5ibG9ja3MucHVzaChjb21wb25lbnQpO1xuICB9XG5cbiAgZW5kQ29tcG9uZW50KCk6IFtXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10sIFdpcmVGb3JtYXQuQ29yZS5IYXNoLCBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+XSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuYmxvY2tzLnBvcCgpO1xuICAgIGFzc2VydChjb21wb25lbnQgaW5zdGFuY2VvZiBDb21wb25lbnRCbG9jaywgXCJDb21waWxlciBidWc6IGVuZENvbXBvbmVudCgpIHNob3VsZCBlbmQgYSBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIChjb21wb25lbnQgYXMgQ29tcG9uZW50QmxvY2spLnRvSlNPTigpO1xuICB9XG5cbiAgcHJlcGFyZUFycmF5KHNpemU6IG51bWJlcikge1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSBhcyBFeHByZXNzaW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxQYXJhbXM+KHZhbHVlcyk7XG4gIH1cblxuICBwcmVwYXJlT2JqZWN0KHNpemU6IG51bWJlcikge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGggPj0gc2l6ZSwgYEV4cGVjdGVkICR7c2l6ZX0gdmFsdWVzIG9uIHRoZSBzdGFjaywgZm91bmQgJHt0aGlzLnZhbHVlcy5sZW5ndGh9YCk7XG5cbiAgICBsZXQga2V5czogc3RyaW5nW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgbGV0IHZhbHVlczogRXhwcmVzc2lvbltdID0gbmV3IEFycmF5KHNpemUpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGtleXNbaV0gPSB0aGlzLnBvcFZhbHVlPHN0cj4oKTtcbiAgICAgIHZhbHVlc1tpXSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxIYXNoPihba2V5cywgdmFsdWVzXSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgcHVzaChhcmdzOiBTdGF0ZW1lbnQpIHtcbiAgICB3aGlsZSAoYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBudWxsKSB7XG4gICAgICBhcmdzLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEJsb2NrLnB1c2goYXJncyk7XG4gIH1cblxuICBwdXNoVmFsdWU8UyBleHRlbmRzIEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoPih2YWw6IFMpIHtcbiAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gIH1cblxuICBwb3BWYWx1ZTxUIGV4dGVuZHMgU3RhY2tWYWx1ZT4oKTogVCB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCwgXCJObyBleHByZXNzaW9uIGZvdW5kIG9uIHN0YWNrXCIpO1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKSBhcyBUO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50KHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBvcGVuID0gdGFnLmNoYXJBdCgwKTtcblxuICByZXR1cm4gb3BlbiA9PT0gb3Blbi50b1VwcGVyQ2FzZSgpO1xufVxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLEFBQU8sU0FBRSxBQUFNLEFBQUUsY0FBTSxBQUFlLEFBQUM7QUFDdkMsQUFBTyxTQUFFLEFBQUssT0FBRSxBQUFPLEFBQVUsQUFBTSxBQUFFLGVBQU0sQUFBZSxBQUFDO0FBSS9ELEFBQU8sU0FJTCxBQUFVLFlBR1YsQUFBRyxBQUNKLFdBQU0sQUFBc0IsQUFBQztBQVE5QixBQUFNO0FBQU47QUFDUyxhQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QztBQUFDO0FBSEMsQUFBSSxTQUFDLEFBQW9CO0FBQ3ZCLEFBQUksYUFBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQVMsQUFBQyxBQUFDLEFBQ2xDO0FBQUMsQUFDRjs7QUFFRCxBQUFNLGFBQW1CLG9CQUFRLEFBQUs7QUFDcEMsZ0JBQW1CLEFBQXVCO0FBQ3hDLEFBQUssQUFBRSxBQUFDO0FBRFMsYUFBSyxRQUFMLEFBQUssQUFBa0IsQUFFMUM7QUFBQztBQUVELEFBQU07QUFDSixBQUFNO0FBQ0osQUFBVSx3QkFBRSxBQUFJLEtBQUMsQUFBVTtBQUMzQixBQUFVLHdCQUFFLEFBQUksS0FBQyxBQUFLLE1BQUMsQUFBSyxBQUM3QixBQUFDLEFBQ0o7QUFKUztBQUlSLEFBQ0Y7O0FBRUQsQUFBTSxhQUFxQixzQkFBUSxBQUFLO0FBT3RDLGdCQUFvQixBQUErQjtBQUNqRCxBQUFLLEFBQUUsQUFBQztBQURVLGFBQVcsY0FBWCxBQUFXLEFBQW9CO0FBTjVDLGFBQUksT0FBRyxBQUFVLEFBQUM7QUFDbEIsYUFBTSxTQUFHLElBQUksQUFBTyxBQUFVLEFBQUM7QUFDL0IsYUFBSyxRQUFHLElBQUksQUFBTyxBQUFVLEFBQUM7QUFDOUIsYUFBTSxTQUF1QyxBQUFF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QUFDLGFBQUMsSUFBSSxBQUFDLElBQUcsQUFBQyxHQUFFLEFBQUMsSUFBRyxBQUFJLE1BQUUsQUFBQyxBQUFFLEtBQUUsQUFBQztBQUM5QixBQUFJLGlCQUFDLEFBQUMsQUFBQyxLQUFHLEFBQUksS0FBQyxBQUFRLEFBQU8sQUFBQztBQUMvQixBQUFNLG1CQUFDLEFBQUMsQUFBQyxLQUFHLEFBQUksS0FBQyxBQUFRLEFBQWMsQUFBQyxBQUMxQztBQUFDO0FBRUQsQUFBSSxhQUFDLEFBQVMsVUFBTyxDQUFDLEFBQUksTUFBRSxBQUFNLEFBQUMsQUFBQyxBQUFDLEFBQ3ZDO0FBQUM7QUFFRCxBQUFhO0FBRWIsQUFBSSxTQUFDLEFBQWU7QUFDbEIsZUFBTyxBQUFJLEtBQUMsQUFBSSxLQUFDLEFBQU0sU0FBRyxBQUFDLEFBQUMsT0FBSyxBQUFJLE1BQUUsQUFBQztBQUN0QyxBQUFJLGlCQUFDLEFBQUcsQUFBRSxBQUFDLEFBQ2I7QUFBQztBQUVELEFBQUksYUFBQyxBQUFZLGFBQUMsQUFBSSxLQUFDLEFBQUksQUFBQyxBQUFDLEFBQy9CO0FBQUM7QUFFRCxBQUFTLGNBQXVDLEFBQU07QUFDcEQsQUFBSSxhQUFDLEFBQU0sT0FBQyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUMsQUFDeEI7QUFBQztBQUVELEFBQVE7a0JBQ04sQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBTSxRQUFFLEFBQThCLEFBQUMsQUFBQzs7QUFDM0QsQUFBTSxlQUFDLEFBQUksS0FBQyxBQUFNLE9BQUMsQUFBRyxBQUFPLEFBQUMsQUFDaEM7QUFBQyxBQUNGOztBQUVELHFCQUFxQixBQUFXO0FBQzlCLFFBQUksQUFBSSxPQUFHLEFBQUcsSUFBQyxBQUFNLE9BQUMsQUFBQyxBQUFDLEFBQUM7QUFFekIsQUFBTSxXQUFDLEFBQUksU0FBSyxBQUFJLEtBQUMsQUFBVyxBQUFFLEFBQUMsQUFDckM7QUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFdpcmVGb3JtYXQgZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0LCBPcHRpb24sIGV4cGVjdCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBBU1QgfSBmcm9tICdAZ2xpbW1lci9zeW50YXgnO1xuaW1wb3J0IHsgQmxvY2tTeW1ib2xUYWJsZSwgUHJvZ3JhbVN5bWJvbFRhYmxlIH0gZnJvbSAnLi90ZW1wbGF0ZS12aXNpdG9yJztcblxuaW1wb3J0IHtcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIENvcmUsXG4gIFN0YXRlbWVudCxcbiAgU3RhdGVtZW50cyxcbiAgRXhwcmVzc2lvbixcbiAgRXhwcmVzc2lvbnMsXG4gIE9wc1xufSBmcm9tICdAZ2xpbW1lci93aXJlLWZvcm1hdCc7XG5cbmV4cG9ydCB0eXBlIHN0ciA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFBhcmFtcyA9IENvcmUuUGFyYW1zO1xuZXhwb3J0IHR5cGUgSGFzaCA9IENvcmUuSGFzaDtcbmV4cG9ydCB0eXBlIFBhdGggPSBDb3JlLlBhdGg7XG5leHBvcnQgdHlwZSBTdGFja1ZhbHVlID0gRXhwcmVzc2lvbiB8IFBhcmFtcyB8IEhhc2ggfCBzdHI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCbG9jayB7XG4gIHB1YmxpYyBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSA9IFtdO1xuXG4gIGFic3RyYWN0IHRvSlNPTigpOiBPYmplY3Q7XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFibGU6IEJsb2NrU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgdG9KU09OKCk6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyB0eXBlID0gXCJ0ZW1wbGF0ZVwiO1xuICBwdWJsaWMgeWllbGRzID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgbmFtZWQgPSBuZXcgRGljdFNldDxzdHJpbmc+KCk7XG4gIHB1YmxpYyBibG9ja3M6IFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrW10gPSBbXTtcbiAgcHVibGljIGhhc0V2YWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN5bWJvbFRhYmxlOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gIH1cblxuICB0b0pTT04oKTogU2VyaWFsaXplZFRlbXBsYXRlQmxvY2sge1xuICAgIHJldHVybiB7XG4gICAgICBzeW1ib2xzOiB0aGlzLnN5bWJvbFRhYmxlLnN5bWJvbHMsXG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnN0YXRlbWVudHMsXG4gICAgICBoYXNFdmFsOiB0aGlzLmhhc0V2YWxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIGF0dHJpYnV0ZXM6IFN0YXRlbWVudHMuQXR0cmlidXRlW10gPSBbXTtcbiAgcHVibGljIGFyZ3VtZW50czogU3RhdGVtZW50cy5Bcmd1bWVudFtdID0gW107XG4gIHByaXZhdGUgaW5QYXJhbXMgPSB0cnVlO1xuICBwdWJsaWMgcG9zaXRpb25hbHM6IG51bWJlcltdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogQmxvY2tTeW1ib2xUYWJsZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgaWYgKHRoaXMuaW5QYXJhbXMpIHtcbiAgICAgIGlmIChTdGF0ZW1lbnRzLmlzTW9kaWZpZXIoc3RhdGVtZW50KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IEVsZW1lbnQgbW9kaWZpZXJzIGFyZSBub3QgYWxsb3dlZCBpbiBjb21wb25lbnRzJyk7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNGbHVzaEVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmluUGFyYW1zID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBcmd1bWVudChzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuYXJndW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICAgIH0gZWxzZSBpZiAoU3RhdGVtZW50cy5pc0F0dHJpYnV0ZShzdGF0ZW1lbnQpKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbXBpbGUgRXJyb3I6IG9ubHkgcGFyYW1ldGVycyBhbGxvd2VkIGJlZm9yZSBmbHVzaC1lbGVtZW50Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RhdGVtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IFtXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10sIFdpcmVGb3JtYXQuQ29yZS5IYXNoLCBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+XSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmFyZ3VtZW50cztcbiAgICBsZXQga2V5cyA9IGFyZ3MubWFwKGFyZyA9PiBhcmdbMV0pO1xuICAgIGxldCB2YWx1ZXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzJdKTtcblxuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmF0dHJpYnV0ZXMsXG4gICAgICBba2V5cywgdmFsdWVzXSxcbiAgICAgIHtcbiAgICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzOiB0aGlzLnRhYmxlLnNsb3RzXG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGUge1xuICBwdWJsaWMgYmxvY2s6IFRlbXBsYXRlQmxvY2s7XG5cbiAgY29uc3RydWN0b3Ioc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgdGhpcy5ibG9jayA9IG5ldyBUZW1wbGF0ZUJsb2NrKHN5bWJvbHMpO1xuICB9XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIHtcbiAgICByZXR1cm4gdGhpcy5ibG9jay50b0pTT04oKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKYXZhU2NyaXB0Q29tcGlsZXIge1xuICBzdGF0aWMgcHJvY2VzcyhvcGNvZGVzOiBhbnlbXSwgc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKTogVGVtcGxhdGUge1xuICAgIGxldCBjb21waWxlciA9IG5ldyBKYXZhU2NyaXB0Q29tcGlsZXIob3Bjb2Rlcywgc3ltYm9scyk7XG4gICAgcmV0dXJuIGNvbXBpbGVyLnByb2Nlc3MoKTtcbiAgfVxuXG4gIHByaXZhdGUgdGVtcGxhdGU6IFRlbXBsYXRlO1xuICBwcml2YXRlIGJsb2NrcyA9IG5ldyBTdGFjazxCbG9jaz4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXTtcbiAgcHJpdmF0ZSB2YWx1ZXM6IFN0YWNrVmFsdWVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKG9wY29kZXM6IGFueVtdLCBzeW1ib2xzOiBQcm9ncmFtU3ltYm9sVGFibGUpIHtcbiAgICB0aGlzLm9wY29kZXMgPSBvcGNvZGVzO1xuICAgIHRoaXMudGVtcGxhdGUgPSBuZXcgVGVtcGxhdGUoc3ltYm9scyk7XG4gIH1cblxuICBnZXQgY3VycmVudEJsb2NrKCk6IEJsb2NrIHtcbiAgICByZXR1cm4gZXhwZWN0KHRoaXMuYmxvY2tzLmN1cnJlbnQsICdFeHBlY3RlZCBhIGJsb2NrIG9uIHRoZSBzdGFjaycpO1xuICB9XG5cbiAgcHJvY2VzcygpOiBUZW1wbGF0ZSB7XG4gICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkgeyB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApOyB9XG4gICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vLyBOZXN0aW5nXG5cbiAgc3RhcnRCbG9jayhbcHJvZ3JhbV06IFtBU1QuUHJvZ3JhbV0pIHtcbiAgICBsZXQgYmxvY2s6IEJsb2NrID0gbmV3IElubGluZUJsb2NrKHByb2dyYW1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5ibG9ja3MucHVzaChibG9jayk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICBsZXQgeyB0ZW1wbGF0ZSwgYmxvY2tzIH0gPSB0aGlzO1xuICAgIGxldCBibG9jayA9IGJsb2Nrcy5wb3AoKSBhcyBJbmxpbmVCbG9jaztcbiAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9jay50b0pTT04oKSk7XG4gIH1cblxuICBzdGFydFByb2dyYW0oKSB7XG4gICAgdGhpcy5ibG9ja3MucHVzaCh0aGlzLnRlbXBsYXRlLmJsb2NrKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG5cbiAgfVxuXG4gIC8vLyBTdGF0ZW1lbnRzXG5cbiAgdGV4dChjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goW09wcy5UZXh0LCBjb250ZW50XSk7XG4gIH1cblxuICBhcHBlbmQodHJ1c3RlZDogYm9vbGVhbikge1xuICAgIHRoaXMucHVzaChbT3BzLkFwcGVuZCwgdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpLCB0cnVzdGVkXSk7XG4gIH1cblxuICBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goW09wcy5Db21tZW50LCB2YWx1ZV0pO1xuICB9XG5cbiAgbW9kaWZpZXIobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFtPcHMuTW9kaWZpZXIsIG5hbWUsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgYmxvY2sobmFtZTogc3RyaW5nLCB0ZW1wbGF0ZTogbnVtYmVyLCBpbnZlcnNlOiBudW1iZXIpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICBsZXQgYmxvY2tzID0gdGhpcy50ZW1wbGF0ZS5ibG9jay5ibG9ja3M7XG4gICAgYXNzZXJ0KHR5cGVvZiB0ZW1wbGF0ZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW3RlbXBsYXRlXSAhPT0gbnVsbCwgJ21pc3NpbmcgYmxvY2sgaW4gdGhlIGNvbXBpbGVyJyk7XG4gICAgYXNzZXJ0KHR5cGVvZiBpbnZlcnNlICE9PSAnbnVtYmVyJyB8fCBibG9ja3NbaW52ZXJzZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuXG4gICAgdGhpcy5wdXNoKFtPcHMuQmxvY2ssIG5hbWUsIHBhcmFtcywgaGFzaCwgYmxvY2tzW3RlbXBsYXRlXSwgYmxvY2tzW2ludmVyc2VdXSk7XG4gIH1cblxuICBvcGVuU3BsYXR0ZWRFbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IC4uLmF0dHJpYnV0ZXMgY2FuIG9ubHkgYmUgdXNlZCBpbiBhbiBlbGVtZW50YCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LmJsb2NrUGFyYW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcGlsZSBFcnJvcjogPCR7ZWxlbWVudC50YWd9PiBpcyBub3QgYSBjb21wb25lbnQgYW5kIGRvZXNuJ3Qgc3VwcG9ydCBibG9jayBwYXJhbWV0ZXJzYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaChbT3BzLk9wZW5TcGxhdHRlZEVsZW1lbnQsIHRhZ10pO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5FbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICB0aGlzLnN0YXJ0Q29tcG9uZW50KGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5PcGVuRWxlbWVudCwgdGFnXSk7XG4gICAgfVxuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChbT3BzLkZsdXNoRWxlbWVudF0pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KGVsZW1lbnQ6IEFTVC5FbGVtZW50Tm9kZSkge1xuICAgIGxldCB0YWcgPSBlbGVtZW50LnRhZztcblxuICAgIGlmIChpc0NvbXBvbmVudCh0YWcpKSB7XG4gICAgICBsZXQgW2F0dHJzLCBhcmdzLCBibG9ja10gPSB0aGlzLmVuZENvbXBvbmVudCgpO1xuICAgICAgdGhpcy5wdXNoKFtPcHMuQ29tcG9uZW50LCB0YWcsIGF0dHJzLCBhcmdzLCBibG9ja10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5DbG9zZUVsZW1lbnRdKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuU3RhdGljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgZHluYW1pY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgdHJ1c3RpbmdBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuVHJ1c3RpbmdBdHRyLCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlXSk7XG4gIH1cblxuICBzdGF0aWNBcmcobmFtZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0FyZywgbmFtZSwgdmFsdWVdKTtcbiAgfVxuXG4gIGR5bmFtaWNBcmcobmFtZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLkR5bmFtaWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gIH1cblxuICB5aWVsZCh0bzogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbT3BzLllpZWxkLCB0bywgcGFyYW1zXSk7XG4gIH1cblxuICBhdHRyU3BsYXQodG86IG51bWJlcikge1xuICAgIHRoaXMucHVzaChbT3BzLkF0dHJTcGxhdCwgdG9dKTtcbiAgfVxuXG4gIGRlYnVnZ2VyKGV2YWxJbmZvOiBDb3JlLkV2YWxJbmZvKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuRGVidWdnZXIsIGV2YWxJbmZvXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IG51bWJlcikge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhhc0Jsb2NrPihbT3BzLkhhc0Jsb2NrLCBuYW1lXSk7XG4gIH1cblxuICBoYXNCbG9ja1BhcmFtcyhuYW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9ja1BhcmFtcz4oW09wcy5IYXNCbG9ja1BhcmFtcywgbmFtZV0pO1xuICB9XG5cbiAgcGFydGlhbChldmFsSW5mbzogQ29yZS5FdmFsSW5mbykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5QYXJ0aWFsLCBwYXJhbXNbMF0sIGV2YWxJbmZvXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNFdmFsID0gdHJ1ZTtcbiAgfVxuXG4gIC8vLyBFeHByZXNzaW9uc1xuXG4gIGxpdGVyYWwodmFsdWU6IEV4cHJlc3Npb25zLlZhbHVlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlVuZGVmaW5lZD4oW09wcy5VbmRlZmluZWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuVmFsdWU+KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB1bmtub3duKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlVua25vd24+KFtPcHMuVW5rbm93biwgbmFtZV0pO1xuICB9XG5cbiAgZ2V0KGhlYWQ6IG51bWJlciwgcGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5HZXQ+KFtPcHMuR2V0LCBoZWFkLCBwYXRoXSk7XG4gIH1cblxuICBtYXliZUxvY2FsKHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuTWF5YmVMb2NhbD4oW09wcy5NYXliZUxvY2FsLCBwYXRoXSk7XG4gIH1cblxuICBjb25jYXQoKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuQ29uY2F0PihbT3BzLkNvbmNhdCwgdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCldKTtcbiAgfVxuXG4gIGhlbHBlcihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IZWxwZXI+KFtPcHMuSGVscGVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIC8vLyBTdGFjayBNYW5hZ2VtZW50IE9wY29kZXNcblxuICBzdGFydENvbXBvbmVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJsb2NrKGVsZW1lbnRbJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy5ibG9ja3MucHVzaChjb21wb25lbnQpO1xuICB9XG5cbiAgZW5kQ29tcG9uZW50KCk6IFtXaXJlRm9ybWF0LlN0YXRlbWVudHMuQXR0cmlidXRlW10sIFdpcmVGb3JtYXQuQ29yZS5IYXNoLCBPcHRpb248V2lyZUZvcm1hdC5TZXJpYWxpemVkSW5saW5lQmxvY2s+XSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IHRoaXMuYmxvY2tzLnBvcCgpO1xuICAgIGFzc2VydChjb21wb25lbnQgaW5zdGFuY2VvZiBDb21wb25lbnRCbG9jaywgXCJDb21waWxlciBidWc6IGVuZENvbXBvbmVudCgpIHNob3VsZCBlbmQgYSBjb21wb25lbnRcIik7XG4gICAgcmV0dXJuIChjb21wb25lbnQgYXMgQ29tcG9uZW50QmxvY2spLnRvSlNPTigpO1xuICB9XG5cbiAgcHJlcGFyZUFycmF5KHNpemU6IG51bWJlcikge1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSBhcyBFeHByZXNzaW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxQYXJhbXM+KHZhbHVlcyk7XG4gIH1cblxuICBwcmVwYXJlT2JqZWN0KHNpemU6IG51bWJlcikge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGggPj0gc2l6ZSwgYEV4cGVjdGVkICR7c2l6ZX0gdmFsdWVzIG9uIHRoZSBzdGFjaywgZm91bmQgJHt0aGlzLnZhbHVlcy5sZW5ndGh9YCk7XG5cbiAgICBsZXQga2V5czogc3RyaW5nW10gPSBuZXcgQXJyYXkoc2l6ZSk7XG4gICAgbGV0IHZhbHVlczogRXhwcmVzc2lvbltdID0gbmV3IEFycmF5KHNpemUpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIGtleXNbaV0gPSB0aGlzLnBvcFZhbHVlPHN0cj4oKTtcbiAgICAgIHZhbHVlc1tpXSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB9XG5cbiAgICB0aGlzLnB1c2hWYWx1ZTxIYXNoPihba2V5cywgdmFsdWVzXSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgcHVzaChhcmdzOiBTdGF0ZW1lbnQpIHtcbiAgICB3aGlsZSAoYXJnc1thcmdzLmxlbmd0aCAtIDFdID09PSBudWxsKSB7XG4gICAgICBhcmdzLnBvcCgpO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudEJsb2NrLnB1c2goYXJncyk7XG4gIH1cblxuICBwdXNoVmFsdWU8UyBleHRlbmRzIEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoPih2YWw6IFMpIHtcbiAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gIH1cblxuICBwb3BWYWx1ZTxUIGV4dGVuZHMgU3RhY2tWYWx1ZT4oKTogVCB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCwgXCJObyBleHByZXNzaW9uIGZvdW5kIG9uIHN0YWNrXCIpO1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKSBhcyBUO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29tcG9uZW50KHRhZzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCBvcGVuID0gdGFnLmNoYXJBdCgwKTtcblxuICByZXR1cm4gb3BlbiA9PT0gb3Blbi50b1VwcGVyQ2FzZSgpO1xufVxuIl19 |
@@ -265,3 +265,4 @@ import TemplateVisitor from "./template-visitor"; | ||
let param = params[i]; | ||
assert(this[param.type], `Unimplemented ${param.type} on TemplateCompiler`); | ||
(false && assert(this[param.type], `Unimplemented ${param.type} on TemplateCompiler`)); | ||
this[param.type](param); | ||
@@ -279,3 +280,4 @@ } | ||
let { key, value } = pairs[i]; | ||
assert(this[value.type], `Unimplemented ${value.type} on TemplateCompiler`); | ||
(false && assert(this[value.type], `Unimplemented ${value.type} on TemplateCompiler`)); | ||
this[value.type](value); | ||
@@ -411,2 +413,2 @@ this.opcode('literal', null, key); | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxBQUF3QyxxQkFBTSxBQUFvQixBQUFDO0FBQzFFLE9BQU8sQUFBZ0Msd0JBQU0sQUFBdUIsQUFBQztBQUNyRSxBQUFPLFNBQUUsQUFBSyxBQUFFLGFBQU0sQUFBZSxBQUFDO0FBQ3RDLEFBQU8sU0FBRSxBQUFNLEFBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQy9DLEFBQU8sU0FBTyxBQUFTLFdBQUUsQUFBVyxBQUFFLG1CQUFNLEFBQWlCLEFBQUM7QUFDOUQsQUFBTyxTQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBUyxBQUFDO0FBTzNDLHdCQUF3QixBQUFVO0FBQ2hDLEFBQU0sV0FBQyxBQUFLLE1BQUMsQUFBTyxZQUFLLEFBQVMsYUFBSSxDQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQU0sQUFBQyxBQUFPO0FBaUJaLGdCQUFZLEFBQXVCO0FBTjNCLGFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDZixhQUFXLGNBQWEsQUFBRSxBQUFDO0FBQzNCLGFBQVcsY0FBRyxJQUFJLEFBQUssQUFBZSxBQUFDO0FBQ3ZDLGFBQU8sVUFBVSxBQUFFLEFBQUM7QUFDcEIsYUFBVyxjQUFHLEFBQUssQUFBQztBQUcxQixBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0I7QUFBQztBQWxCRCxBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0I7QUFDdEQsWUFBSSxBQUFlLGtCQUFHLElBQUksQUFBZSxBQUFFLEFBQUM7QUFDNUMsQUFBZSx3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUM7QUFFM0IsWUFBSSxBQUFRLFdBQUcsSUFB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Y0FBTSxJQUFJLEFBQVcsQUFBQyxZQUE0Qyw4Q0FBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDckY7QUFBQztBQUVELEFBQUUsQUFBQyxRQUFDLEFBQU0sT0FBQyxBQUFNLFdBQUssQUFBQyxBQUFDLEdBQUMsQUFBQztBQUN4QixBQUFNLGVBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUMsQUFBQyxBQUFJLFdBQUMsQUFBQztBQUNOLGNBQU0sSUFBSSxBQUFXLEFBQUMsWUFBaUQsbURBQUUsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFGO0FBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSwgQWN0aW9uIH0gZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciwgeyBUZW1wbGF0ZSB9IGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IGFzc2VydCwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCwgaXNMaXRlcmFsLCBTeW50YXhFcnJvciB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgbWV0YTogT3BhcXVlO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZS5lc2NhcGVkICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLmVzY2FwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlQ29tcGlsZXIge1xuICBzdGF0aWMgY29tcGlsZShvcHRpb25zOiBDb21waWxlT3B0aW9ucywgYXN0OiBBU1QuUHJvZ3JhbSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3Mob3Bjb2RlcywgYXN0WydzeW1ib2xzJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9ucztcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBzeW1ib2xTdGFjayA9IG5ldyBTdGFjazxTeW1ib2xUYWJsZT4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgZ2V0IHN5bWJvbHMoKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zeW1ib2xTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBzeW1ib2wgdGFibGUgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnM6IEFjdGlvbltdKTogQWN0aW9uW10ge1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoW25hbWUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbbmFtZV0pIHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkICR7bmFtZX0gb24gVGVtcGxhdGVDb21waWxlcmApOyB9XG4gICAgICAodGhpc1tuYW1lXSBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm9wY29kZXM7XG4gIH1cblxuICBzdGFydFByb2dyYW0ocHJvZ3JhbTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChwcm9ncmFtWzBdWydzeW1ib2xzJ10pO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydFByb2dyYW0nLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkKys7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0QmxvY2snLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkcy5wdXNoKHRoaXMudGVtcGxhdGVJZCAtIDEpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRCbG9jaycsIG51bGwpO1xuICB9XG5cbiAgdGV4dChbYWN0aW9uXTogW0FTVC5UZXh0Tm9kZV0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl06IFtBU1QuQ29tbWVudFN0YXRlbWVudF0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIGxldCBhdHRyaWJ1dGVzID0gYWN0aW9uLmF0dHJpYnV0ZXM7XG4gICAgbGV0IGhhc1NwbGF0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXR0ciA9IGF0dHJpYnV0ZXNbaV07XG4gICAgICBpZiAoYXR0ci5uYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgaGFzU3BsYXQgPSBhdHRyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzU3BsYXQpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuU3BsYXR0ZWRFbGVtZW50JywgYWN0aW9uLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnb3BlbkVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUoW2FjdGlvbi5hdHRyaWJ1dGVzW2ldXSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24ubW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLm1vZGlmaWVyKFthY3Rpb24ubW9kaWZpZXJzW2ldXSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdmbHVzaEVsZW1lbnQnLCBudWxsKTtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2goYWN0aW9uWydzeW1ib2xzJ10pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwsIGFjdGlvbik7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl06IFtBU1QuQXR0ck5vZGVdKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMgJiYgbmFtZSA9PT0gJy4uLmF0dHJpYnV0ZXMnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdhdHRyU3BsYXQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKCdhdHRycycpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXTogW0FTVC5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRdKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGFjdGlvbi5wYXRoLCBhY3Rpb24ubG9jLCAnbW9kaWZpZXInKTtcblxuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0c1swXSk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXTogW0FTVC5NdXN0YWNoZVN0YXRlbWVudF0pIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBhY3Rpb247XG5cbiAgICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9IGVsc2UgaWYgKGlzWWllbGQocGF0aCkpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwocGF0aCkpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBhc3NlcnRWYWxpZFBhcnRpYWwoYWN0aW9uKTtcbiAgICAgIHRoaXMucGFydGlhbChwYXJhbXMsIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc0RlYnVnZ2VyKHBhdGgpKSB7XG4gICAgICBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2UoYWN0aW9uKTtcbiAgICAgIHRoaXMuZGVidWdnZXIoJ2RlYnVnZ2VyJywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL106IFtBU1QuQmxvY2tTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgbGV0IHRlbXBsYXRlSWQgPSB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIGxldCBpbnZlcnNlSWQgPSBhY3Rpb24uaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdibG9jaycsIGFjdGlvbiwgYWN0aW9uLnBhdGgucGFydHNbMF0sIHRlbXBsYXRlSWQsIGludmVyc2VJZCk7XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgYWN0aW9ucywgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBwcm9jZXNzZWQgYWN0aW9uc1xuXG4gIGFyZyhbcGF0aF06IFtBU1QuUGF0aEV4cHJlc3Npb25dKSB7XG4gICAgbGV0IHsgcGFydHM6IFtoZWFkLCAuLi5yZXN0XSB9ID0gcGF0aDtcbiAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xzLmFsbG9jYXRlTmFtZWQoaGVhZCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldCcsIHBhdGgsIHN5bWJvbCwgcmVzdCk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgZXhwciwgcGF0aC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpc0J1aWx0SW5IZWxwZXIocGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByIGFzIEFTVC5DYWxsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJnKHBhdGgpKSB7XG4gICAgICB0aGlzLmFyZyhbcGF0aF0pO1xuICAgIH0gZWxzZSBpZiAoaXNIZWxwZXJJbnZvY2F0aW9uKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgcGF0aC5wYXJ0c1swXSk7XG4gICAgfSBlbHNlIGlmIChwYXRoLnRoaXMpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBwYXRoLnBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzTG9jYWwocGF0aCwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgbGV0IFtoZWFkLCAuLi5wYXJ0c10gPSBwYXRoLnBhcnRzO1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHRoaXMuc3ltYm9scy5nZXQoaGVhZCksIHBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ3Vua25vd24nLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ21heWJlTG9jYWwnLCBleHByLCBwYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3lpZWxkJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayh0bykpO1xuICB9XG5cbiAgZGVidWdnZXIoX25hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLm9wY29kZSgnZGVidWdnZXInLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuQ2FsbCkge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9jaycsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sobmFtZSkpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrUGFyYW1zJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBwYXJ0aWFsKF9wYXJhbXM6IEFTVC5FeHByZXNzaW9uW10sIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCdwYXJ0aWFsJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuZ2V0RXZhbEluZm8oKSk7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcbiAgICBpZiAoaXNIYXNCbG9jayhwYXRoKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcjogQVNULlN1YkV4cHJlc3Npb24pIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIucGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0c1swXSk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcjogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gICAgaWYgKGV4cHIuZGF0YSkge1xuICAgICAgdGhpcy5hcmcoW2V4cHJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgc3ltYm9scyB9ID0gdGhpcztcbiAgICAgIGxldCBbaGVhZF0gPSBleHByLnBhcnRzO1xuXG4gICAgICBpZiAoZXhwci50aGlzKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH0gZWxzZSAgaWYgKHN5bWJvbHMuaGFzKGhlYWQpKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBzeW1ib2xzLmdldChoZWFkKSwgZXhwci5wYXJ0cy5zbGljZSgxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgZXhwci5wYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb246IEFTVC5TdHJpbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYWN0aW9uOiBBU1QuQm9vbGVhbkxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbjogQVNULk51bWJlckxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChhY3Rpb246IEFTVC5OdWxsTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBvcGNvZGUobmFtZTogYW55LCBhY3Rpb246IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGV4cHIucGF0aCwgZXhwci5sb2MsICdoZWxwZXInKTtcblxuICAgIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gZXhwcjtcblxuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtczogQVNULkV4cHJlc3Npb25bXSkge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3BhcmFtLnR5cGVdIGFzIGFueSkocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2g6IEFTVC5IYXNoKSB7XG4gICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICAgIGlmICghcGFpcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcnNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3ZhbHVlLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3ZhbHVlLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3ZhbHVlLnR5cGVdIGFzIGFueSkodmFsdWUpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBrZXkpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlT2JqZWN0JywgbnVsbCwgcGFpcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZTogQVNULkF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHM6IEFTVC5Db25jYXRTdGF0ZW1lbnRbJ3BhcnRzJ10pIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gIH1cblxuICBtZXRhKG5vZGU6IEFTVC5CYXNlTm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVySW52b2NhdGlvbihtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KTogbXVzdGFjaGUgaXMgQVNULk11c3RhY2hlU3RhdGVtZW50ICYgeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24gfSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzU2ltcGxlUGF0aCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uLCBzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3ltYm9scyAmJiAvKiBwYXJ0cy5sZW5ndGggJiYgKi8gc3ltYm9scy5oYXMocGFydHNbMF0pO1xufVxuXG5mdW5jdGlvbiBpc1lpZWxkKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0RlYnVnZ2VyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2RlYnVnZ2VyJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKHBhdGgpIHx8IGlzSGFzQmxvY2tQYXJhbXMocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwYXRoWydkYXRhJ107XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU2ltcGxlUGF0aChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24sIGxvYzogQVNULlNvdXJjZUxvY2F0aW9uLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKCFpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFxcYCR7cGF0aC5vcmlnaW5hbH1cXGAgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAke2NvbnRleHR9IG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCwgcGF0aC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBzdHJpbmcge1xuICBsZXQgeyBwYWlycyB9ID0gc3RhdGVtZW50Lmhhc2g7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChwYWlyc1swXS52YWx1ZSBhcyBBU1QuU3RyaW5nTGl0ZXJhbCkudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSAvKiA6IGV4cHIgKi8ge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlOiBzdHJpbmcsIGNhbGw6IEFTVC5DYWxsKTogc3RyaW5nIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IGNhbGw7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIGNhbGwubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHBhcmFtID0gcGFyYW1zWzBdO1xuICAgIGlmIChwYXJhbS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUtY29tcGlsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9jb21waWxlci9saWIvdGVtcGxhdGUtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxBQUF3QyxxQkFBTSxBQUFvQixBQUFDO0FBQzFFLE9BQU8sQUFBZ0Msd0JBQU0sQUFBdUIsQUFBQztBQUNyRSxBQUFPLFNBQUUsQUFBSyxBQUFFLGFBQU0sQUFBZSxBQUFDO0FBQ3RDLEFBQU8sU0FBRSxBQUFNLEFBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQy9DLEFBQU8sU0FBTyxBQUFTLFdBQUUsQUFBVyxBQUFFLG1CQUFNLEFBQWlCLEFBQUM7QUFDOUQsQUFBTyxTQUFFLEFBQWdCLEFBQUUsd0JBQU0sQUFBUyxBQUFDO0FBTzNDLHdCQUF3QixBQUFVO0FBQ2hDLEFBQU0sV0FBQyxBQUFLLE1BQUMsQUFBTyxZQUFLLEFBQVMsYUFBSSxDQUFDLEFBQUssTUFBQyxBQUFPLEFBQUMsQUFDdkQ7QUFBQztBQUVELEFBQU0sQUFBQyxBQUFPO0FBaUJaLGdCQUFZLEFBQXVCO0FBTjNCLGFBQVUsYUFBRyxBQUFDLEFBQUM7QUFDZixhQUFXLGNBQWEsQUFBRSxBQUFDO0FBQzNCLGFBQVcsY0FBRyxJQUFJLEFBQUssQUFBZSxBQUFDO0FBQ3ZDLGFBQU8sVUFBVSxBQUFFLEFBQUM7QUFDcEIsYUFBVyxjQUFHLEFBQUssQUFBQztBQUcxQixBQUFJLGFBQUMsQUFBTyxVQUFHLEFBQU8sV0FBSSxBQUFFLEFBQUMsQUFDL0I7QUFBQztBQWxCRCxBQUFNLFdBQUMsQUFBTyxRQUFDLEFBQXVCLFNBQUUsQUFBZ0I7QUFDdEQsWUFBSSxBQUFlLGtCQUFHLElBQUksQUFBZSxBQUFFLEFBQUM7QUFDNUMsQUFBZSx3QkFBQyxBQUFLLE1BQUMsQUFBRyxBQUFDLEFBQUM7QUFFM0IsWUFBSSxBQUFRLFdBQUcsSUFB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bEMsY0FBTSxJQUFJLEFBQVcsQUFBQyxZQUE0Qyw4Q0FBRSxBQUFTLFVBQUMsQUFBRyxBQUFDLEFBQUMsQUFDckY7QUFBQztBQUVELEFBQUUsQUFBQyxRQUFDLEFBQU0sT0FBQyxBQUFNLFdBQUssQUFBQyxBQUFDLEdBQUMsQUFBQztBQUN4QixBQUFNLGVBQUMsQUFBUyxBQUFDLEFBQ25CO0FBQUMsQUFBQyxBQUFJLFdBQUMsQUFBQztBQUNOLGNBQU0sSUFBSSxBQUFXLEFBQUMsWUFBaUQsbURBQUUsQUFBUyxVQUFDLEFBQUcsQUFBQyxBQUFDLEFBQzFGO0FBQUMsQUFDSDtBQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSwgQWN0aW9uIH0gZnJvbSBcIi4vdGVtcGxhdGUtdmlzaXRvclwiO1xuaW1wb3J0IEphdmFTY3JpcHRDb21waWxlciwgeyBUZW1wbGF0ZSB9IGZyb20gXCIuL2phdmFzY3JpcHQtY29tcGlsZXJcIjtcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IGFzc2VydCwgZXhwZWN0IH0gZnJvbSBcIkBnbGltbWVyL3V0aWxcIjtcbmltcG9ydCB7IEFTVCwgaXNMaXRlcmFsLCBTeW50YXhFcnJvciB9IGZyb20gJ0BnbGltbWVyL3N5bnRheCc7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBPcGFxdWUgfSBmcm9tIFwiQGdsaW1tZXIvaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zIHtcbiAgbWV0YTogT3BhcXVlO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZS5lc2NhcGVkICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLmVzY2FwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlQ29tcGlsZXIge1xuICBzdGF0aWMgY29tcGlsZShvcHRpb25zOiBDb21waWxlT3B0aW9ucywgYXN0OiBBU1QuUHJvZ3JhbSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3Mob3Bjb2RlcywgYXN0WydzeW1ib2xzJ10pO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9ucztcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBzeW1ib2xTdGFjayA9IG5ldyBTdGFjazxTeW1ib2xUYWJsZT4oKTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnMpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgZ2V0IHN5bWJvbHMoKTogU3ltYm9sVGFibGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5zeW1ib2xTdGFjay5jdXJyZW50LCAnRXhwZWN0ZWQgYSBzeW1ib2wgdGFibGUgb24gdGhlIHN0YWNrJyk7XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnM6IEFjdGlvbltdKTogQWN0aW9uW10ge1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoW25hbWUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbbmFtZV0pIHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkICR7bmFtZX0gb24gVGVtcGxhdGVDb21waWxlcmApOyB9XG4gICAgICAodGhpc1tuYW1lXSBhcyBhbnkpKC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm9wY29kZXM7XG4gIH1cblxuICBzdGFydFByb2dyYW0ocHJvZ3JhbTogW0FTVC5Qcm9ncmFtXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucHVzaChwcm9ncmFtWzBdWydzeW1ib2xzJ10pO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydFByb2dyYW0nLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wb3AoKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtOiBbQVNULlByb2dyYW1dKSB7XG4gICAgdGhpcy5zeW1ib2xTdGFjay5wdXNoKHByb2dyYW1bMF1bJ3N5bWJvbHMnXSk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkKys7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0QmxvY2snLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy50ZW1wbGF0ZUlkcy5wdXNoKHRoaXMudGVtcGxhdGVJZCAtIDEpO1xuICAgIHRoaXMub3Bjb2RlKCdlbmRCbG9jaycsIG51bGwpO1xuICB9XG5cbiAgdGV4dChbYWN0aW9uXTogW0FTVC5UZXh0Tm9kZV0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl06IFtBU1QuQ29tbWVudFN0YXRlbWVudF0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIGxldCBhdHRyaWJ1dGVzID0gYWN0aW9uLmF0dHJpYnV0ZXM7XG4gICAgbGV0IGhhc1NwbGF0O1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXR0ciA9IGF0dHJpYnV0ZXNbaV07XG4gICAgICBpZiAoYXR0ci5uYW1lID09PSAnLi4uYXR0cmlidXRlcycpIHtcbiAgICAgICAgaGFzU3BsYXQgPSBhdHRyO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaGFzU3BsYXQpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdvcGVuU3BsYXR0ZWRFbGVtZW50JywgYWN0aW9uLCBhY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wY29kZSgnb3BlbkVsZW1lbnQnLCBhY3Rpb24sIGFjdGlvbik7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24uYXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGUoW2FjdGlvbi5hdHRyaWJ1dGVzW2ldXSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhY3Rpb24ubW9kaWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLm1vZGlmaWVyKFthY3Rpb24ubW9kaWZpZXJzW2ldXSk7XG4gICAgfVxuICAgIHRoaXMub3Bjb2RlKCdmbHVzaEVsZW1lbnQnLCBudWxsKTtcbiAgICB0aGlzLnN5bWJvbFN0YWNrLnB1c2goYWN0aW9uWydzeW1ib2xzJ10pO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KFthY3Rpb25dOiBbQVNULkVsZW1lbnROb2RlXSkge1xuICAgIHRoaXMuc3ltYm9sU3RhY2sucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwsIGFjdGlvbik7XG4gIH1cblxuICBhdHRyaWJ1dGUoW2FjdGlvbl06IFtBU1QuQXR0ck5vZGVdKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMgJiYgbmFtZSA9PT0gJy4uLmF0dHJpYnV0ZXMnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdhdHRyU3BsYXQnLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5hbGxvY2F0ZUJsb2NrKCdhdHRycycpKTtcbiAgICAgIH0gZWxzZSBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXTogW0FTVC5FbGVtZW50TW9kaWZpZXJTdGF0ZW1lbnRdKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGFjdGlvbi5wYXRoLCBhY3Rpb24ubG9jLCAnbW9kaWZpZXInKTtcblxuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0c1swXSk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXTogW0FTVC5NdXN0YWNoZVN0YXRlbWVudF0pIHtcbiAgICBsZXQgeyBwYXRoIH0gPSBhY3Rpb247XG5cbiAgICBpZiAoaXNMaXRlcmFsKHBhdGgpKSB7XG4gICAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICAgICAgdGhpcy5vcGNvZGUoJ2FwcGVuZCcsIGFjdGlvbiwgIWFjdGlvbi5lc2NhcGVkKTtcbiAgICB9IGVsc2UgaWYgKGlzWWllbGQocGF0aCkpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwocGF0aCkpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBhc3NlcnRWYWxpZFBhcnRpYWwoYWN0aW9uKTtcbiAgICAgIHRoaXMucGFydGlhbChwYXJhbXMsIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc0RlYnVnZ2VyKHBhdGgpKSB7XG4gICAgICBhc3NlcnRWYWxpZERlYnVnZ2VyVXNhZ2UoYWN0aW9uKTtcbiAgICAgIHRoaXMuZGVidWdnZXIoJ2RlYnVnZ2VyJywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL106IFtBU1QuQmxvY2tTdGF0ZW1lbnRdKSB7XG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgbGV0IHRlbXBsYXRlSWQgPSB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIGxldCBpbnZlcnNlSWQgPSBhY3Rpb24uaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdibG9jaycsIGFjdGlvbiwgYWN0aW9uLnBhdGgucGFydHNbMF0sIHRlbXBsYXRlSWQsIGludmVyc2VJZCk7XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgYWN0aW9ucywgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBwcm9jZXNzZWQgYWN0aW9uc1xuXG4gIGFyZyhbcGF0aF06IFtBU1QuUGF0aEV4cHJlc3Npb25dKSB7XG4gICAgbGV0IHsgcGFydHM6IFtoZWFkLCAuLi5yZXN0XSB9ID0gcGF0aDtcbiAgICBsZXQgc3ltYm9sID0gdGhpcy5zeW1ib2xzLmFsbG9jYXRlTmFtZWQoaGVhZCk7XG4gICAgdGhpcy5vcGNvZGUoJ2dldCcsIHBhdGgsIHN5bWJvbCwgcmVzdCk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcblxuICAgIGlmIChpc0xpdGVyYWwocGF0aCkpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgZXhwciwgcGF0aC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpc0J1aWx0SW5IZWxwZXIocGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByIGFzIEFTVC5DYWxsKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJnKHBhdGgpKSB7XG4gICAgICB0aGlzLmFyZyhbcGF0aF0pO1xuICAgIH0gZWxzZSBpZiAoaXNIZWxwZXJJbnZvY2F0aW9uKGV4cHIpKSB7XG4gICAgICB0aGlzLnByZXBhcmVIZWxwZXIoZXhwcik7XG4gICAgICB0aGlzLm9wY29kZSgnaGVscGVyJywgZXhwciwgcGF0aC5wYXJ0c1swXSk7XG4gICAgfSBlbHNlIGlmIChwYXRoLnRoaXMpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBwYXRoLnBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzTG9jYWwocGF0aCwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgbGV0IFtoZWFkLCAuLi5wYXJ0c10gPSBwYXRoLnBhcnRzO1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIHRoaXMuc3ltYm9scy5nZXQoaGVhZCksIHBhcnRzKTtcbiAgICB9IGVsc2UgaWYgKGlzU2ltcGxlUGF0aChwYXRoKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ3Vua25vd24nLCBleHByLCBwYXRoLnBhcnRzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGNvZGUoJ21heWJlTG9jYWwnLCBleHByLCBwYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnByZXBhcmVQYXJhbXMoYWN0aW9uLnBhcmFtcyk7XG4gICAgdGhpcy5vcGNvZGUoJ3lpZWxkJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayh0bykpO1xuICB9XG5cbiAgZGVidWdnZXIoX25hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLm9wY29kZSgnZGVidWdnZXInLCBhY3Rpb24sIHRoaXMuc3ltYm9scy5nZXRFdmFsSW5mbygpKTtcbiAgfVxuXG4gIGhhc0Jsb2NrKG5hbWU6IHN0cmluZywgYWN0aW9uOiBBU1QuQ2FsbCkge1xuICAgIHRoaXMub3Bjb2RlKCdoYXNCbG9jaycsIGFjdGlvbiwgdGhpcy5zeW1ib2xzLmFsbG9jYXRlQmxvY2sobmFtZSkpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb246IEFTVC5DYWxsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2hhc0Jsb2NrUGFyYW1zJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuYWxsb2NhdGVCbG9jayhuYW1lKSk7XG4gIH1cblxuICBwYXJ0aWFsKF9wYXJhbXM6IEFTVC5FeHByZXNzaW9uW10sIGFjdGlvbjogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCdwYXJ0aWFsJywgYWN0aW9uLCB0aGlzLnN5bWJvbHMuZ2V0RXZhbEluZm8oKSk7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgbGV0IHsgcGF0aCB9ID0gZXhwcjtcbiAgICBpZiAoaXNIYXNCbG9jayhwYXRoKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKHBhdGgpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcjogQVNULlN1YkV4cHJlc3Npb24pIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIucGF0aCkpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0c1swXSk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcjogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gICAgaWYgKGV4cHIuZGF0YSkge1xuICAgICAgdGhpcy5hcmcoW2V4cHJdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHsgc3ltYm9scyB9ID0gdGhpcztcbiAgICAgIGxldCBbaGVhZF0gPSBleHByLnBhcnRzO1xuXG4gICAgICBpZiAoZXhwci50aGlzKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCAwLCBleHByLnBhcnRzKTtcbiAgICAgIH0gZWxzZSAgaWYgKHN5bWJvbHMuaGFzKGhlYWQpKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBzeW1ib2xzLmdldChoZWFkKSwgZXhwci5wYXJ0cy5zbGljZSgxKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZ2V0JywgZXhwciwgMCwgZXhwci5wYXJ0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgU3RyaW5nTGl0ZXJhbChhY3Rpb246IEFTVC5TdHJpbmdMaXRlcmFsKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgQm9vbGVhbkxpdGVyYWwoYWN0aW9uOiBBU1QuQm9vbGVhbkxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdW1iZXJMaXRlcmFsKGFjdGlvbjogQVNULk51bWJlckxpdGVyYWwpIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBOdWxsTGl0ZXJhbChhY3Rpb246IEFTVC5OdWxsTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIFVuZGVmaW5lZExpdGVyYWwoYWN0aW9uOiBBU1QuVW5kZWZpbmVkTGl0ZXJhbCkge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIC8vLyBVdGlsaXRpZXNcblxuICBvcGNvZGUobmFtZTogYW55LCBhY3Rpb246IGFueSwgLi4uYXJnczogYW55W10pIHtcbiAgICBsZXQgb3Bjb2RlID0gW25hbWUsIC4uLmFyZ3NdO1xuICAgIGlmICh0aGlzLmluY2x1ZGVNZXRhICYmIGFjdGlvbikge1xuICAgICAgb3Bjb2RlLnB1c2godGhpcy5tZXRhKGFjdGlvbikpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2Rlcy5wdXNoKG9wY29kZSk7XG4gIH1cblxuICBwcmVwYXJlSGVscGVyKGV4cHI6IEFTVC5DYWxsKSB7XG4gICAgYXNzZXJ0SXNTaW1wbGVQYXRoKGV4cHIucGF0aCwgZXhwci5sb2MsICdoZWxwZXInKTtcblxuICAgIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gZXhwcjtcblxuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGFyYW1zKHBhcmFtczogQVNULkV4cHJlc3Npb25bXSkge1xuICAgIGlmICghcGFyYW1zLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgcGFyYW0gPSBwYXJhbXNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3BhcmFtLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3BhcmFtLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3BhcmFtLnR5cGVdIGFzIGFueSkocGFyYW0pO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJhbXMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVIYXNoKGhhc2g6IEFTVC5IYXNoKSB7XG4gICAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICAgIGlmICghcGFpcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYWlycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHsga2V5LCB2YWx1ZSB9ID0gcGFpcnNbaV07XG5cbiAgICAgIGFzc2VydCh0aGlzW3ZhbHVlLnR5cGVdLCBgVW5pbXBsZW1lbnRlZCAke3ZhbHVlLnR5cGV9IG9uIFRlbXBsYXRlQ29tcGlsZXJgKTtcbiAgICAgICh0aGlzW3ZhbHVlLnR5cGVdIGFzIGFueSkodmFsdWUpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBrZXkpO1xuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlT2JqZWN0JywgbnVsbCwgcGFpcnMubGVuZ3RoKTtcbiAgfVxuXG4gIHByZXBhcmVBdHRyaWJ1dGVWYWx1ZSh2YWx1ZTogQVNULkF0dHJOb2RlWyd2YWx1ZSddKSB7XG4gICAgLy8gcmV0dXJucyB0aGUgc3RhdGljIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBzdGF0aWNcblxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xuICAgICAgY2FzZSAnVGV4dE5vZGUnOlxuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIHZhbHVlLCB2YWx1ZS5jaGFycyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnTXVzdGFjaGVTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFt2YWx1ZV0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBjYXNlICdDb25jYXRTdGF0ZW1lbnQnOlxuICAgICAgICB0aGlzLnByZXBhcmVDb25jYXRQYXJ0cyh2YWx1ZS5wYXJ0cyk7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdjb25jYXQnLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcmVwYXJlQ29uY2F0UGFydHMocGFydHM6IEFTVC5Db25jYXRTdGF0ZW1lbnRbJ3BhcnRzJ10pIHtcbiAgICBmb3IgKGxldCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJ0ID0gcGFydHNbaV07XG5cbiAgICAgIGlmIChwYXJ0LnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVNdXN0YWNoZShbcGFydF0pO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0LnR5cGUgPT09ICdUZXh0Tm9kZScpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBwYXJ0LmNoYXJzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZUFycmF5JywgbnVsbCwgcGFydHMubGVuZ3RoKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZU11c3RhY2hlKFthY3Rpb25dOiBbQVNULk11c3RhY2hlU3RhdGVtZW50XSkge1xuICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gIH1cblxuICBtZXRhKG5vZGU6IEFTVC5CYXNlTm9kZSkge1xuICAgIGxldCBsb2MgPSBub2RlLmxvYztcbiAgICBpZiAoIWxvYykgeyByZXR1cm4gW107IH1cblxuICAgIGxldCB7IHNvdXJjZSwgc3RhcnQsIGVuZCB9ID0gbG9jO1xuICAgIHJldHVybiBbICdsb2MnLCBbc291cmNlIHx8IG51bGwsIFtzdGFydC5saW5lLCBzdGFydC5jb2x1bW5dLCBbZW5kLmxpbmUsIGVuZC5jb2x1bW5dXSBdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzSGVscGVySW52b2NhdGlvbihtdXN0YWNoZTogQVNULk11c3RhY2hlU3RhdGVtZW50KTogbXVzdGFjaGUgaXMgQVNULk11c3RhY2hlU3RhdGVtZW50ICYgeyBwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24gfSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzU2ltcGxlUGF0aCh7IHBhcnRzIH06IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gcGFydHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsKHsgcGFydHMgfTogQVNULlBhdGhFeHByZXNzaW9uLCBzeW1ib2xzOiBTeW1ib2xUYWJsZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3ltYm9scyAmJiAvKiBwYXJ0cy5sZW5ndGggJiYgKi8gc3ltYm9scy5oYXMocGFydHNbMF0pO1xufVxuXG5mdW5jdGlvbiBpc1lpZWxkKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0RlYnVnZ2VyKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2RlYnVnZ2VyJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9jayhwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbikge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIocGF0aDogQVNULlBhdGhFeHByZXNzaW9uKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKHBhdGgpIHx8IGlzSGFzQmxvY2tQYXJhbXMocGF0aCk7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHBhdGg6IEFTVC5QYXRoRXhwcmVzc2lvbik6IGJvb2xlYW4ge1xuICByZXR1cm4gISFwYXRoWydkYXRhJ107XG59XG5cbmZ1bmN0aW9uIGFzc2VydElzU2ltcGxlUGF0aChwYXRoOiBBU1QuUGF0aEV4cHJlc3Npb24sIGxvYzogQVNULlNvdXJjZUxvY2F0aW9uLCBjb250ZXh0OiBzdHJpbmcpIHtcbiAgaWYgKCFpc1NpbXBsZVBhdGgocGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoYFxcYCR7cGF0aC5vcmlnaW5hbH1cXGAgaXMgbm90IGEgdmFsaWQgbmFtZSBmb3IgYSAke2NvbnRleHR9IG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0uYCwgcGF0aC5sb2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkWWllbGQoc3RhdGVtZW50OiBBU1QuTXVzdGFjaGVTdGF0ZW1lbnQpOiBzdHJpbmcge1xuICBsZXQgeyBwYWlycyB9ID0gc3RhdGVtZW50Lmhhc2g7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCwgc3RhdGVtZW50LmxvYyk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChwYWlyc1swXS52YWx1ZSBhcyBBU1QuU3RyaW5nTGl0ZXJhbCkudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSAvKiA6IGV4cHIgKi8ge1xuICBsZXQgeyBwYXJhbXMsIGhhc2gsIGVzY2FwZWQsIGxvYyB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIHN0YXRlbWVudC5sb2MpO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBzdGF0ZW1lbnQubG9jKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlOiBzdHJpbmcsIGNhbGw6IEFTVC5DYWxsKTogc3RyaW5nIHtcbiAgbGV0IHsgcGFyYW1zLCBoYXNoLCBsb2MgfSA9IGNhbGw7XG5cbiAgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50c2AsIGNhbGwubG9jKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IHBhcmFtID0gcGFyYW1zWzBdO1xuICAgIGlmIChwYXJhbS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbS52YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWAsIGNhbGwubG9jKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgLCBjYWxsLmxvYyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWREZWJ1Z2dlclVzYWdlKHN0YXRlbWVudDogQVNULk11c3RhY2hlU3RhdGVtZW50KSB7XG4gIGxldCB7IHBhcmFtcywgaGFzaCB9ID0gc3RhdGVtZW50O1xuXG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihgZGVidWdnZXIgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCwgc3RhdGVtZW50LmxvYyk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKGBkZWJ1Z2dlciBkb2VzIG5vdCB0YWtlIGFueSBwb3NpdGlvbmFsIGFyZ3VtZW50c2AsIHN0YXRlbWVudC5sb2MpO1xuICB9XG59XG4iXX0= |
@@ -220,4 +220,5 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var blocks = this.template.block.blocks; | ||
assert(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
assert(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
false && assert(typeof template !== 'number' || blocks[template] !== null, 'missing block in the compiler'); | ||
false && assert(typeof inverse !== 'number' || blocks[inverse] !== null, 'missing block in the compiler'); | ||
this.push([Ops.Block, name, params, hash, blocks[template], blocks[inverse]]); | ||
@@ -360,3 +361,4 @@ }; | ||
var component = this.blocks.pop(); | ||
assert(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
false && assert(component instanceof ComponentBlock, "Compiler bug: endComponent() should end a component"); | ||
return component.toJSON(); | ||
@@ -374,3 +376,4 @@ }; | ||
JavaScriptCompiler.prototype.prepareObject = function prepareObject(size) { | ||
assert(this.values.length >= size, "Expected " + size + " values on the stack, found " + this.values.length); | ||
false && assert(this.values.length >= size, "Expected " + size + " values on the stack, found " + this.values.length); | ||
var keys = new Array(size); | ||
@@ -399,3 +402,4 @@ var values = new Array(size); | ||
JavaScriptCompiler.prototype.popValue = function popValue() { | ||
assert(this.values.length, "No expression found on stack"); | ||
false && assert(this.values.length, "No expression found on stack"); | ||
return this.values.pop(); | ||
@@ -420,2 +424,2 @@ }; | ||
} | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxBQUFPLFNBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ3ZDLEFBQU8sU0FBRSxBQUFLLE9BQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxlQUFNLEFBQWUsQUFBQztBQUkvRCxBQUFPLFNBSUwsQUFBVSxZQUdWLEFBQUcsQUFDSixXQUFNLEFBQXNCLEFBQUM7QUFROUIsQUFBTSxXQUFOOztBQUNTOzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDO0FBSEMsQUFBSTs7eUNBQUMsQUFBb0IsV0FDdkIsQUFBSTthQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUMsQUFDbEMsQUFBQyxBQUNGOzs7OztBQUVELEFBQU0sV0FBbUI7Ozt5QkFDSixBQUF1QjtBQUN4QyxBQUFLLEFBQUUsQUFBQzs7cURBRFM7O2NBQUssUUFBTCxBQUFLLEFBQWtCLEFBRTFDLEFBQUM7O0FBRUQsQUFBTTs7cURBQ0osQUFBTTs7d0JBQ1EsQUFBSSxLQUFDLEFBQVUsQUFDM0IsQUFBVTt3QkFBRSxBQUFJLEtBQUMsQUFBSyxNQUZqQixBQUVrQixBQUFLLEFBQzdCLEFBQUMsQUFDSixBQUFDLEFBQ0Y7QUFKSyxBQUFVOzs7O0VBUGlCLEFBQUssQUFDcEM7QUFZRixBQUFNLFdBQXFCOzs7MkJBT0wsQUFBK0I7QUFDakQsQUFBSyxBQUFFLEFBQUM7O3NEQURVOztlQUFXLGNBTnhCLEFBTWEsQUFBVyxBQUFvQjtlQU54QyxPQUFHLEFBQVUsQUFBQyxBQUNsQjtlQUFNLFNBQUcsSUFBSSxBQUFPLEFBQVUsQUFBQyxBQUMvQjtlQUFLLFFBQUcsSUFBSSxBQUFPLEFBQVUsQUFBQyxBQUM5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RyxBQUFHLElBQUMsQUFBTSxPQUFDLEFBQUMsQUFBQyxBQUFDLEFBRXpCLEFBQU07V0FBQyxBQUFJLFNBQUssQUFBSSxLQUFDLEFBQVcsQUFBRSxBQUFDLEFBQ3JDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGFjaywgRGljdFNldCwgT3B0aW9uLCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNUIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vdGVtcGxhdGUtdmlzaXRvcic7XG5cbmltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBDb3JlLFxuICBTdGF0ZW1lbnQsXG4gIFN0YXRlbWVudHMsXG4gIEV4cHJlc3Npb24sXG4gIEV4cHJlc3Npb25zLFxuICBPcHNcbn0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBzdHIgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbmV4cG9ydCB0eXBlIEhhc2ggPSBDb3JlLkhhc2g7XG5leHBvcnQgdHlwZSBQYXRoID0gQ29yZS5QYXRoO1xuZXhwb3J0IHR5cGUgU3RhY2tWYWx1ZSA9IEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoIHwgc3RyO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2sge1xuICBwdWJsaWMgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcblxuICBhYnN0cmFjdCB0b0pTT04oKTogT2JqZWN0O1xuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgdHlwZSA9IFwidGVtcGxhdGVcIjtcbiAgcHVibGljIHlpZWxkcyA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgYmxvY2tzOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9ja1tdID0gW107XG4gIHB1YmxpYyBoYXNFdmFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeW1ib2xUYWJsZTogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3ltYm9sczogdGhpcy5zeW1ib2xUYWJsZS5zeW1ib2xzLFxuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBTdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG4gIHB1YmxpYyBhcmd1bWVudHM6IFN0YXRlbWVudHMuQXJndW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGluUGFyYW1zID0gdHJ1ZTtcbiAgcHVibGljIHBvc2l0aW9uYWxzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEJsb2NrU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBFbGVtZW50IG1vZGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gY29tcG9uZW50cycpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmFyZ3VtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBdHRyaWJ1dGUoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmd1bWVudHM7XG4gICAgbGV0IGtleXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzFdKTtcbiAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLFxuICAgICAgW2tleXMsIHZhbHVlc10sXG4gICAgICB7XG4gICAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgfVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIHtcbiAgcHVibGljIGJsb2NrOiBUZW1wbGF0ZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMuYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jayhzeW1ib2xzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2sudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgc3RhdGljIHByb2Nlc3Mob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyKG9wY29kZXMsIHN5bWJvbHMpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgU3RhY2s8QmxvY2s+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W107XG4gIHByaXZhdGUgdmFsdWVzOiBTdGFja1ZhbHVlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcGNvZGVzOiBhbnlbXSwgc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRCbG9jaygpOiBCbG9jayB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2Nrcy5jdXJyZW50LCAnRXhwZWN0ZWQgYSBibG9jayBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoKTogVGVtcGxhdGUge1xuICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHsgdGhyb3cgbmV3IEVycm9yKGB1bmltcGxlbWVudGVkICR7b3Bjb2RlfSBvbiBKYXZhU2NyaXB0Q29tcGlsZXJgKTsgfVxuICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gIH1cblxuICAvLy8gTmVzdGluZ1xuXG4gIHN0YXJ0QmxvY2soW3Byb2dyYW1dOiBbQVNULlByb2dyYW1dKSB7XG4gICAgbGV0IGJsb2NrOiBCbG9jayA9IG5ldyBJbmxpbmVCbG9jayhwcm9ncmFtWydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICBsZXQgYmxvY2sgPSBibG9ja3MucG9wKCkgYXMgSW5saW5lQmxvY2s7XG4gICAgdGVtcGxhdGUuYmxvY2suYmxvY2tzLnB1c2goYmxvY2sudG9KU09OKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICB9XG5cbiAgYXBwZW5kKHRydXN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKSwgdHJ1c3RlZF0pO1xuICB9XG5cbiAgY29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQ29tbWVudCwgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIGJsb2NrKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgbGV0IGJsb2NrcyA9IHRoaXMudGVtcGxhdGUuYmxvY2suYmxvY2tzO1xuICAgIGFzc2VydCh0eXBlb2YgdGVtcGxhdGUgIT09ICdudW1iZXInIHx8IGJsb2Nrc1t0ZW1wbGF0ZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcblxuICAgIHRoaXMucHVzaChbT3BzLkJsb2NrLCBuYW1lLCBwYXJhbXMsIGhhc2gsIGJsb2Nrc1t0ZW1wbGF0ZV0sIGJsb2Nrc1tpbnZlcnNlXV0pO1xuICB9XG5cbiAgb3BlblNwbGF0dGVkRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAuLi5hdHRyaWJ1dGVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gZWxlbWVudGApO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5PcGVuU3BsYXR0ZWRFbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhpcy5zdGFydENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgbGV0IFthdHRycywgYXJncywgYmxvY2tdID0gdGhpcy5lbmRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNvbXBvbmVudCwgdGFnLCBhdHRycywgYXJncywgYmxvY2tdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHRydXN0aW5nQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlRydXN0aW5nQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgc3RhdGljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gIH1cblxuICBkeW5hbWljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgeWllbGQodG86IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5ZaWVsZCwgdG8sIHBhcmFtc10pO1xuICB9XG5cbiAgYXR0clNwbGF0KHRvOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goW09wcy5BdHRyU3BsYXQsIHRvXSk7XG4gIH1cblxuICBkZWJ1Z2dlcihldmFsSW5mbzogQ29yZS5FdmFsSW5mbykge1xuICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9jaz4oW09wcy5IYXNCbG9jaywgbmFtZV0pO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXM+KFtPcHMuSGFzQmxvY2tQYXJhbXMsIG5hbWVdKTtcbiAgfVxuXG4gIHBhcnRpYWwoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnNcblxuICBsaXRlcmFsKHZhbHVlOiBFeHByZXNzaW9ucy5WYWx1ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5VbmRlZmluZWQ+KFtPcHMuVW5kZWZpbmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdW5rbm93bihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Vbmtub3duPihbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgfVxuXG4gIGdldChoZWFkOiBudW1iZXIsIHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuR2V0PihbT3BzLkdldCwgaGVhZCwgcGF0aF0pO1xuICB9XG5cbiAgbWF5YmVMb2NhbChwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLk1heWJlTG9jYWw+KFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICB9XG5cbiAgY29uY2F0KCkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkNvbmNhdD4oW09wcy5Db25jYXQsIHRoaXMucG9wVmFsdWU8UGFyYW1zPigpXSk7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGVscGVyPihbT3BzLkhlbHBlciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG5cbiAgc3RhcnRDb21wb25lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goY29tcG9uZW50KTtcbiAgfVxuXG4gIGVuZENvbXBvbmVudCgpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmJsb2Nrcy5wb3AoKTtcbiAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgIHJldHVybiAoY29tcG9uZW50IGFzIENvbXBvbmVudEJsb2NrKS50b0pTT04oKTtcbiAgfVxuXG4gIHByZXBhcmVBcnJheShzaXplOiBudW1iZXIpIHtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkgYXMgRXhwcmVzc2lvbik7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8UGFyYW1zPih2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZTxzdHI+KCk7XG4gICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8SGFzaD4oW2tleXMsIHZhbHVlc10pO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIHB1c2goYXJnczogU3RhdGVtZW50KSB7XG4gICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRCbG9jay5wdXNoKGFyZ3MpO1xuICB9XG5cbiAgcHVzaFZhbHVlPFMgZXh0ZW5kcyBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaD4odmFsOiBTKSB7XG4gICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICB9XG5cbiAgcG9wVmFsdWU8VCBleHRlbmRzIFN0YWNrVmFsdWU+KCk6IFQge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCkgYXMgVDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBvbmVudCh0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgb3BlbiA9IHRhZy5jaGFyQXQoMCk7XG5cbiAgcmV0dXJuIG9wZW4gPT09IG9wZW4udG9VcHBlckNhc2UoKTtcbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2NvbXBpbGVyL2xpYi9qYXZhc2NyaXB0LWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFDQSxBQUFPLFNBQUUsQUFBTSxBQUFFLGNBQU0sQUFBZSxBQUFDO0FBQ3ZDLEFBQU8sU0FBRSxBQUFLLE9BQUUsQUFBTyxBQUFVLEFBQU0sQUFBRSxlQUFNLEFBQWUsQUFBQztBQUkvRCxBQUFPLFNBSUwsQUFBVSxZQUdWLEFBQUcsQUFDSixXQUFNLEFBQXNCLEFBQUM7QUFROUIsQUFBTSxXQUFOOztBQUNTOzthQUFVLGFBQWdCLEFBQUUsQUFBQyxBQU90QyxBQUFDO0FBSEMsQUFBSTs7eUNBQUMsQUFBb0IsV0FDdkIsQUFBSTthQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBUyxBQUFDLEFBQUMsQUFDbEMsQUFBQyxBQUNGOzs7OztBQUVELEFBQU0sV0FBbUI7Ozt5QkFDSixBQUF1QjtBQUN4QyxBQUFLLEFBQUUsQUFBQzs7cURBRFM7O2NBQUssUUFBTCxBQUFLLEFBQWtCLEFBRTFDLEFBQUM7O0FBRUQsQUFBTTs7cURBQ0osQUFBTTs7d0JBQ1EsQUFBSSxLQUFDLEFBQVUsQUFDM0IsQUFBVTt3QkFBRSxBQUFJLEtBQUMsQUFBSyxNQUZqQixBQUVrQixBQUFLLEFBQzdCLEFBQUMsQUFDSixBQUFDLEFBQ0Y7QUFKSyxBQUFVOzs7O0VBUGlCLEFBQUssQUFDcEM7QUFZRixBQUFNLFdBQXFCOzs7MkJBT0wsQUFBK0I7QUFDakQsQUFBSyxBQUFFLEFBQUM7O3NEQURVOztlQUFXLGNBTnhCLEFBTWEsQUFBVyxBQUFvQjtlQU54QyxPQUFHLEFBQVUsQUFBQyxBQUNsQjtlQUFNLFNBQUcsSUFBSSxBQUFPLEFBQVUsQUFBQyxBQUMvQjtlQUFLLFFBQUcsSUFBSSxBQUFPLEFBQVUsQUFBQyxBQUM5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LEFBQUksT0FBRyxBQUFHLElBQUMsQUFBTSxPQUFDLEFBQUMsQUFBQyxBQUFDLEFBRXpCLEFBQU07V0FBQyxBQUFJLFNBQUssQUFBSSxLQUFDLEFBQVcsQUFBRSxBQUFDLEFBQ3JDLEFBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBXaXJlRm9ybWF0IGZyb20gJ0BnbGltbWVyL3dpcmUtZm9ybWF0JztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJAZ2xpbW1lci91dGlsXCI7XG5pbXBvcnQgeyBTdGFjaywgRGljdFNldCwgT3B0aW9uLCBleHBlY3QgfSBmcm9tIFwiQGdsaW1tZXIvdXRpbFwiO1xuaW1wb3J0IHsgQVNUIH0gZnJvbSAnQGdsaW1tZXIvc3ludGF4JztcbmltcG9ydCB7IEJsb2NrU3ltYm9sVGFibGUsIFByb2dyYW1TeW1ib2xUYWJsZSB9IGZyb20gJy4vdGVtcGxhdGUtdmlzaXRvcic7XG5cbmltcG9ydCB7XG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrLFxuICBDb3JlLFxuICBTdGF0ZW1lbnQsXG4gIFN0YXRlbWVudHMsXG4gIEV4cHJlc3Npb24sXG4gIEV4cHJlc3Npb25zLFxuICBPcHNcbn0gZnJvbSAnQGdsaW1tZXIvd2lyZS1mb3JtYXQnO1xuXG5leHBvcnQgdHlwZSBzdHIgPSBzdHJpbmc7XG5leHBvcnQgdHlwZSBQYXJhbXMgPSBDb3JlLlBhcmFtcztcbmV4cG9ydCB0eXBlIEhhc2ggPSBDb3JlLkhhc2g7XG5leHBvcnQgdHlwZSBQYXRoID0gQ29yZS5QYXRoO1xuZXhwb3J0IHR5cGUgU3RhY2tWYWx1ZSA9IEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoIHwgc3RyO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2sge1xuICBwdWJsaWMgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcblxuICBhYnN0cmFjdCB0b0pTT04oKTogT2JqZWN0O1xuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRhYmxlOiBCbG9ja1N5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIHBhcmFtZXRlcnM6IHRoaXMudGFibGUuc2xvdHNcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUJsb2NrIGV4dGVuZHMgQmxvY2sge1xuICBwdWJsaWMgdHlwZSA9IFwidGVtcGxhdGVcIjtcbiAgcHVibGljIHlpZWxkcyA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgYmxvY2tzOiBXaXJlRm9ybWF0LlNlcmlhbGl6ZWRJbmxpbmVCbG9ja1tdID0gW107XG4gIHB1YmxpYyBoYXNFdmFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzeW1ib2xUYWJsZTogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1c2goc3RhdGVtZW50OiBTdGF0ZW1lbnQpIHtcbiAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICB9XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRUZW1wbGF0ZUJsb2NrIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3ltYm9sczogdGhpcy5zeW1ib2xUYWJsZS5zeW1ib2xzLFxuICAgICAgc3RhdGVtZW50czogdGhpcy5zdGF0ZW1lbnRzLFxuICAgICAgaGFzRXZhbDogdGhpcy5oYXNFdmFsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7XG4gIHB1YmxpYyBhdHRyaWJ1dGVzOiBTdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdID0gW107XG4gIHB1YmxpYyBhcmd1bWVudHM6IFN0YXRlbWVudHMuQXJndW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIGluUGFyYW1zID0gdHJ1ZTtcbiAgcHVibGljIHBvc2l0aW9uYWxzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IEJsb2NrU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVzaChzdGF0ZW1lbnQ6IFN0YXRlbWVudCkge1xuICAgIGlmICh0aGlzLmluUGFyYW1zKSB7XG4gICAgICBpZiAoU3RhdGVtZW50cy5pc01vZGlmaWVyKHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBFbGVtZW50IG1vZGlmaWVycyBhcmUgbm90IGFsbG93ZWQgaW4gY29tcG9uZW50cycpO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzRmx1c2hFbGVtZW50KHN0YXRlbWVudCkpIHtcbiAgICAgICAgdGhpcy5pblBhcmFtcyA9IGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChTdGF0ZW1lbnRzLmlzQXJndW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmFyZ3VtZW50cy5wdXNoKHN0YXRlbWVudCk7XG4gICAgICB9IGVsc2UgaWYgKFN0YXRlbWVudHMuaXNBdHRyaWJ1dGUoc3RhdGVtZW50KSkge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZXMucHVzaChzdGF0ZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb21waWxlIEVycm9yOiBvbmx5IHBhcmFtZXRlcnMgYWxsb3dlZCBiZWZvcmUgZmx1c2gtZWxlbWVudCcpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YXRlbWVudHMucHVzaChzdGF0ZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBhcmdzID0gdGhpcy5hcmd1bWVudHM7XG4gICAgbGV0IGtleXMgPSBhcmdzLm1hcChhcmcgPT4gYXJnWzFdKTtcbiAgICBsZXQgdmFsdWVzID0gYXJncy5tYXAoYXJnID0+IGFyZ1syXSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLFxuICAgICAgW2tleXMsIHZhbHVlc10sXG4gICAgICB7XG4gICAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgICAgcGFyYW1ldGVyczogdGhpcy50YWJsZS5zbG90c1xuICAgICAgfVxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlIHtcbiAgcHVibGljIGJsb2NrOiBUZW1wbGF0ZUJsb2NrO1xuXG4gIGNvbnN0cnVjdG9yKHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSkge1xuICAgIHRoaXMuYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jayhzeW1ib2xzKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuYmxvY2sudG9KU09OKCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyIHtcbiAgc3RhdGljIHByb2Nlc3Mob3Bjb2RlczogYW55W10sIHN5bWJvbHM6IFByb2dyYW1TeW1ib2xUYWJsZSk6IFRlbXBsYXRlIHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyKG9wY29kZXMsIHN5bWJvbHMpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZTtcbiAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgU3RhY2s8QmxvY2s+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W107XG4gIHByaXZhdGUgdmFsdWVzOiBTdGFja1ZhbHVlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcGNvZGVzOiBhbnlbXSwgc3ltYm9sczogUHJvZ3JhbVN5bWJvbFRhYmxlKSB7XG4gICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKHN5bWJvbHMpO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRCbG9jaygpOiBCbG9jayB7XG4gICAgcmV0dXJuIGV4cGVjdCh0aGlzLmJsb2Nrcy5jdXJyZW50LCAnRXhwZWN0ZWQgYSBibG9jayBvbiB0aGUgc3RhY2snKTtcbiAgfVxuXG4gIHByb2Nlc3MoKTogVGVtcGxhdGUge1xuICAgIHRoaXMub3Bjb2Rlcy5mb3JFYWNoKChbb3Bjb2RlLCAuLi5hcmdzXSkgPT4ge1xuICAgICAgaWYgKCF0aGlzW29wY29kZV0pIHsgdGhyb3cgbmV3IEVycm9yKGB1bmltcGxlbWVudGVkICR7b3Bjb2RlfSBvbiBKYXZhU2NyaXB0Q29tcGlsZXJgKTsgfVxuICAgICAgdGhpc1tvcGNvZGVdKC4uLmFyZ3MpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGU7XG4gIH1cblxuICAvLy8gTmVzdGluZ1xuXG4gIHN0YXJ0QmxvY2soW3Byb2dyYW1dOiBbQVNULlByb2dyYW1dKSB7XG4gICAgbGV0IGJsb2NrOiBCbG9jayA9IG5ldyBJbmxpbmVCbG9jayhwcm9ncmFtWydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICBsZXQgYmxvY2sgPSBibG9ja3MucG9wKCkgYXMgSW5saW5lQmxvY2s7XG4gICAgdGVtcGxhdGUuYmxvY2suYmxvY2tzLnB1c2goYmxvY2sudG9KU09OKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuVGV4dCwgY29udGVudF0pO1xuICB9XG5cbiAgYXBwZW5kKHRydXN0ZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnB1c2goW09wcy5BcHBlbmQsIHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKSwgdHJ1c3RlZF0pO1xuICB9XG5cbiAgY29tbWVudCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFtPcHMuQ29tbWVudCwgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKG5hbWU6IHN0cmluZykge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaChbT3BzLk1vZGlmaWVyLCBuYW1lLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIGJsb2NrKG5hbWU6IHN0cmluZywgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgbGV0IGJsb2NrcyA9IHRoaXMudGVtcGxhdGUuYmxvY2suYmxvY2tzO1xuICAgIGFzc2VydCh0eXBlb2YgdGVtcGxhdGUgIT09ICdudW1iZXInIHx8IGJsb2Nrc1t0ZW1wbGF0ZV0gIT09IG51bGwsICdtaXNzaW5nIGJsb2NrIGluIHRoZSBjb21waWxlcicpO1xuICAgIGFzc2VydCh0eXBlb2YgaW52ZXJzZSAhPT0gJ251bWJlcicgfHwgYmxvY2tzW2ludmVyc2VdICE9PSBudWxsLCAnbWlzc2luZyBibG9jayBpbiB0aGUgY29tcGlsZXInKTtcblxuICAgIHRoaXMucHVzaChbT3BzLkJsb2NrLCBuYW1lLCBwYXJhbXMsIGhhc2gsIGJsb2Nrc1t0ZW1wbGF0ZV0sIGJsb2Nrc1tpbnZlcnNlXV0pO1xuICB9XG5cbiAgb3BlblNwbGF0dGVkRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAuLi5hdHRyaWJ1dGVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gYW4gZWxlbWVudGApO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5ibG9ja1BhcmFtcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6IDwke2VsZW1lbnQudGFnfT4gaXMgbm90IGEgY29tcG9uZW50IGFuZCBkb2Vzbid0IHN1cHBvcnQgYmxvY2sgcGFyYW1ldGVyc2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2goW09wcy5PcGVuU3BsYXR0ZWRFbGVtZW50LCB0YWddKTtcbiAgICB9XG4gIH1cblxuICBvcGVuRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgdGhpcy5zdGFydENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuYmxvY2tQYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiA8JHtlbGVtZW50LnRhZ30+IGlzIG5vdCBhIGNvbXBvbmVudCBhbmQgZG9lc24ndCBzdXBwb3J0IGJsb2NrIHBhcmFtZXRlcnNgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuT3BlbkVsZW1lbnQsIHRhZ10pO1xuICAgIH1cbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLnB1c2goW09wcy5GbHVzaEVsZW1lbnRdKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudChlbGVtZW50OiBBU1QuRWxlbWVudE5vZGUpIHtcbiAgICBsZXQgdGFnID0gZWxlbWVudC50YWc7XG5cbiAgICBpZiAoaXNDb21wb25lbnQodGFnKSkge1xuICAgICAgbGV0IFthdHRycywgYXJncywgYmxvY2tdID0gdGhpcy5lbmRDb21wb25lbnQoKTtcbiAgICAgIHRoaXMucHVzaChbT3BzLkNvbXBvbmVudCwgdGFnLCBhdHRycywgYXJncywgYmxvY2tdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wdXNoKFtPcHMuQ2xvc2VFbGVtZW50XSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlN0YXRpY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuRHluYW1pY0F0dHIsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHRydXN0aW5nQXR0cihuYW1lOiBzdHIsIG5hbWVzcGFjZTogc3RyKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpO1xuICAgIHRoaXMucHVzaChbT3BzLlRydXN0aW5nQXR0ciwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgc3RhdGljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5TdGF0aWNBcmcsIG5hbWUsIHZhbHVlXSk7XG4gIH1cblxuICBkeW5hbWljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5EeW5hbWljQXJnLCBuYW1lLCB2YWx1ZV0pO1xuICB9XG5cbiAgeWllbGQodG86IG51bWJlcikge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goW09wcy5ZaWVsZCwgdG8sIHBhcmFtc10pO1xuICB9XG5cbiAgYXR0clNwbGF0KHRvOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2goW09wcy5BdHRyU3BsYXQsIHRvXSk7XG4gIH1cblxuICBkZWJ1Z2dlcihldmFsSW5mbzogQ29yZS5FdmFsSW5mbykge1xuICAgIHRoaXMucHVzaChbT3BzLkRlYnVnZ2VyLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9jaz4oW09wcy5IYXNCbG9jaywgbmFtZV0pO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogbnVtYmVyKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXM+KFtPcHMuSGFzQmxvY2tQYXJhbXMsIG5hbWVdKTtcbiAgfVxuXG4gIHBhcnRpYWwoZXZhbEluZm86IENvcmUuRXZhbEluZm8pIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgdGhpcy5wdXNoKFtPcHMuUGFydGlhbCwgcGFyYW1zWzBdLCBldmFsSW5mb10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2suaGFzRXZhbCA9IHRydWU7XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnNcblxuICBsaXRlcmFsKHZhbHVlOiBFeHByZXNzaW9ucy5WYWx1ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5VbmRlZmluZWQ+KFtPcHMuVW5kZWZpbmVkXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLlZhbHVlPih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdW5rbm93bihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Vbmtub3duPihbT3BzLlVua25vd24sIG5hbWVdKTtcbiAgfVxuXG4gIGdldChoZWFkOiBudW1iZXIsIHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuR2V0PihbT3BzLkdldCwgaGVhZCwgcGF0aF0pO1xuICB9XG5cbiAgbWF5YmVMb2NhbChwYXRoOiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLk1heWJlTG9jYWw+KFtPcHMuTWF5YmVMb2NhbCwgcGF0aF0pO1xuICB9XG5cbiAgY29uY2F0KCkge1xuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkNvbmNhdD4oW09wcy5Db25jYXQsIHRoaXMucG9wVmFsdWU8UGFyYW1zPigpXSk7XG4gIH1cblxuICBoZWxwZXIobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGVscGVyPihbT3BzLkhlbHBlciwgbmFtZSwgcGFyYW1zLCBoYXNoXSk7XG4gIH1cblxuICAvLy8gU3RhY2sgTWFuYWdlbWVudCBPcGNvZGVzXG5cbiAgc3RhcnRDb21wb25lbnQoZWxlbWVudDogQVNULkVsZW1lbnROb2RlKSB7XG4gICAgbGV0IGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCbG9jayhlbGVtZW50WydzeW1ib2xzJ10pO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goY29tcG9uZW50KTtcbiAgfVxuXG4gIGVuZENvbXBvbmVudCgpOiBbV2lyZUZvcm1hdC5TdGF0ZW1lbnRzLkF0dHJpYnV0ZVtdLCBXaXJlRm9ybWF0LkNvcmUuSGFzaCwgT3B0aW9uPFdpcmVGb3JtYXQuU2VyaWFsaXplZElubGluZUJsb2NrPl0ge1xuICAgIGxldCBjb21wb25lbnQgPSB0aGlzLmJsb2Nrcy5wb3AoKTtcbiAgICBhc3NlcnQoY29tcG9uZW50IGluc3RhbmNlb2YgQ29tcG9uZW50QmxvY2ssIFwiQ29tcGlsZXIgYnVnOiBlbmRDb21wb25lbnQoKSBzaG91bGQgZW5kIGEgY29tcG9uZW50XCIpO1xuICAgIHJldHVybiAoY29tcG9uZW50IGFzIENvbXBvbmVudEJsb2NrKS50b0pTT04oKTtcbiAgfVxuXG4gIHByZXBhcmVBcnJheShzaXplOiBudW1iZXIpIHtcbiAgICBsZXQgdmFsdWVzOiBFeHByZXNzaW9uW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICB2YWx1ZXMucHVzaCh0aGlzLnBvcFZhbHVlKCkgYXMgRXhwcmVzc2lvbik7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8UGFyYW1zPih2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZTxzdHI+KCk7XG4gICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8SGFzaD4oW2tleXMsIHZhbHVlc10pO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIHB1c2goYXJnczogU3RhdGVtZW50KSB7XG4gICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRCbG9jay5wdXNoKGFyZ3MpO1xuICB9XG5cbiAgcHVzaFZhbHVlPFMgZXh0ZW5kcyBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaD4odmFsOiBTKSB7XG4gICAgdGhpcy52YWx1ZXMucHVzaCh2YWwpO1xuICB9XG5cbiAgcG9wVmFsdWU8VCBleHRlbmRzIFN0YWNrVmFsdWU+KCk6IFQge1xuICAgIGFzc2VydCh0aGlzLnZhbHVlcy5sZW5ndGgsIFwiTm8gZXhwcmVzc2lvbiBmb3VuZCBvbiBzdGFja1wiKTtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMucG9wKCkgYXMgVDtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBvbmVudCh0YWc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgb3BlbiA9IHRhZy5jaGFyQXQoMCk7XG5cbiAgcmV0dXJuIG9wZW4gPT09IG9wZW4udG9VcHBlckNhc2UoKTtcbn1cbiJdfQ== |
{ | ||
"name": "@glimmer/compiler", | ||
"version": "0.28.3", | ||
"version": "0.29.0", | ||
"repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/compiler", | ||
"dependencies": { | ||
"@glimmer/syntax": "^0.28.3", | ||
"@glimmer/util": "^0.28.3", | ||
"@glimmer/wire-format": "^0.28.3", | ||
"@glimmer/interfaces": "^0.28.3", | ||
"@glimmer/syntax": "^0.29.0", | ||
"@glimmer/util": "^0.29.0", | ||
"@glimmer/wire-format": "^0.29.0", | ||
"@glimmer/interfaces": "^0.29.0", | ||
"simple-html-tokenizer": "^0.3.0" | ||
@@ -11,0 +11,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
764542
6458
+ Added@glimmer/interfaces@0.29.10(transitive)
+ Added@glimmer/syntax@0.29.10(transitive)
+ Added@glimmer/util@0.29.10(transitive)
+ Added@glimmer/wire-format@0.29.10(transitive)
+ Addedsimple-html-tokenizer@0.4.3(transitive)
- Removed@glimmer/interfaces@0.28.3(transitive)
- Removed@glimmer/syntax@0.28.3(transitive)
- Removed@glimmer/util@0.28.3(transitive)
- Removed@glimmer/wire-format@0.28.3(transitive)
Updated@glimmer/interfaces@^0.29.0
Updated@glimmer/syntax@^0.29.0
Updated@glimmer/util@^0.29.0
Updated@glimmer/wire-format@^0.29.0