console-gui-tools
Advanced tools
Comparing version 1.1.31 to 1.1.32
@@ -33,2 +33,5 @@ import { ForegroundColor } from "chalk"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![double layout](https://user-images.githubusercontent.com/14907987/170996957-cb28414b-7be2-4aa0-938b-f6d1724cfa4c.png) | ||
* | ||
* @param {PageBuilder} page1 The first page. | ||
@@ -35,0 +38,0 @@ * @param {PageBuilder} page2 The second page. |
@@ -5,2 +5,5 @@ import { ConsoleManager } from "../../ConsoleGui.js"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![double layout](https://user-images.githubusercontent.com/14907987/170996957-cb28414b-7be2-4aa0-938b-f6d1724cfa4c.png) | ||
* | ||
* @param {PageBuilder} page1 The first page. | ||
@@ -315,2 +318,2 @@ * @param {PageBuilder} page2 The second page. | ||
export default DoubleLayout; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGF5b3V0L0RvdWJsZUxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0scUJBQXFCLENBQUE7QUErQmpFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFhckIsWUFBbUIsS0FBbUIsRUFBRSxLQUFrQixFQUFFLE9BQTRCLEVBQUUsV0FBa0IsQ0FBQztRQUg3RyxjQUFTLEdBQThCLENBQUMsQ0FBQTtRQUlwQyw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBRWxCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRXZELHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtRQUUvQyx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUE7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFBaUIsRUFBRSxLQUFhO1FBQzNDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFBO1NBQ3BCO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtTQUNwQjtJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLElBQWlCLElBQVUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBRTlEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsSUFBaUIsSUFBVSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQSxDQUFDLENBQUM7SUFFOUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsTUFBZ0I7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFFBQVEsQ0FBQyxLQUFhLEVBQUUsS0FBYTtRQUN4QyxJQUFJLEtBQUssSUFBSSxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQTtTQUMxQjthQUFNO1lBQ0gsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7U0FDMUI7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFNBQVMsQ0FBQyxNQUFlLElBQVUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFBLENBQUMsQ0FBQztJQUV2RTs7OztPQUlHO0lBQ0ksV0FBVyxDQUFDLFFBQWUsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQSxDQUFDLENBQUM7SUFFdEU7Ozs7T0FJRztJQUNJLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDeEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZO1FBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtTQUNwQjthQUFNO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUE7U0FDcEI7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsS0FBdUI7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUE7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFFBQWdCO1FBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksWUFBWSxFQUFFO1lBQ3hDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDekUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2FBQzVFO1NBQ0o7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsUUFBZ0I7UUFDakMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxZQUFZLEVBQUU7WUFDeEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUN6RSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDNUU7U0FDSjtJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxRQUFRLENBQUMsSUFBNEIsRUFBRSxVQUFrQyxFQUFFLEtBQUssR0FBRyxDQUFDO1FBQ3hGLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQTtRQUN4RyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqRSxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzFCLElBQUksT0FBTyxHQUFHO1lBQ1YsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNaLENBQUE7UUFDRCxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkIsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDdEMsQ0FBQyxDQUFDLENBQUE7U0FDTDthQUFNO1lBQ0gsT0FBTyxHQUFHO2dCQUNOLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBQ1QsQ0FBQyxHQUFHLFVBQVUsQ0FBQSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDckMsQ0FBQTtZQUNELGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQXVCLEVBQUUsRUFBRTtnQkFDckMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUE7WUFDdEMsQ0FBQyxDQUFDLENBQUE7WUFDRixVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsT0FBdUIsRUFBRSxFQUFFO2dCQUM1QyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQTtZQUN0QyxDQUFDLENBQUMsQ0FBQTtTQUNMO1FBQ0QsSUFBSSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkYsZUFBZSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxFQUFFLG1CQUFtQjtvQkFDM0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFBO29CQUNoQixJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUU7d0JBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLDZFQUE2RTtxQkFDbkk7eUJBQU07d0JBQ0gsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtxQkFDbkc7b0JBQ0QsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFFM0Msd0JBQXdCO29CQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQzdDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxHQUFHLE1BQU0sRUFBRTs0QkFDM0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBOzRCQUM3RyxNQUFLO3lCQUNSOzZCQUFNOzRCQUNILElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQTs0QkFDakMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7eUJBQzFCO3FCQUNKO29CQUNELDBCQUEwQjtvQkFDMUIsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtpQkFDMUQ7Z0JBQ0QsT0FBTyxDQUFDLENBQUE7WUFDWixDQUFDLENBQUMsQ0FBQTtTQUNMO1FBQ0QsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFO1lBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUMxSixJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRTtnQkFDM0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQTthQUMvSDtZQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUN2SixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUN0QzthQUFNO1lBQ0gsTUFBTSxHQUFHLEdBQW9CLEVBQUUsQ0FBQTtZQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDNUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTtnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7YUFDbkk7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDNUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTtnQkFDeEQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7YUFDbkk7WUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDNUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUE7U0FDL0I7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJO1FBQ1AsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdGLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDdkosSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLDBCQUEwQjtnQkFDaEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtvQkFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQ3ZOO3FCQUFNO29CQUNILElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2lCQUM1SztnQkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQXFCLEVBQUUsRUFBRTtvQkFDdEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFBO2dCQUNyQyxDQUFDLENBQUMsQ0FBQTtnQkFDRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtpQkFDdkw7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQzNJO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFO29CQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2FBQzNLO2lCQUFNLEVBQUUsNkJBQTZCO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7aUJBQ3BKO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBcUIsRUFBRSxFQUFFO29CQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQ3JDLENBQUMsQ0FBQyxDQUFBO2dCQUNGLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7b0JBQ3hCLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtpQkFDcEo7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUU7b0JBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtnQkFDckMsQ0FBQyxDQUFDLENBQUE7YUFDTDtTQUNKO2FBQU0sRUFBRSxzQkFBc0I7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNqSSxNQUFNLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQ3ZKLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO1lBQ2xHLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7WUFDbEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQTtZQUNsQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsMEJBQTBCO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUN4QixJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2lCQUNoWjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUs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RUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7aUJBQzlHO2FBQ0o7U0FDSjtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9yZWdyb3VuZENvbG9yIH0gZnJvbSBcImNoYWxrXCJcbmltcG9ydCB7IENvbnNvbGVNYW5hZ2VyLCBQYWdlQnVpbGRlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IFN0eWxlZEVsZW1lbnQgfSBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIERvdWJsZUxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZUxheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age3N0cmluZ30gW2NoYW5nZUZvY3VzS2V5XSAtIFRoZSBrZXkgdGhhdCBzaG91bGQgYmUgcHJlc3NlZCB0byBjaGFuZ2UgdGhlIGZvY3VzLlxuICogQHByb3Age1wiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwifSBbZGlyZWN0aW9uXSAtIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxheW91dC5cbiAqIEBwcm9wIHtzdHJpbmd9IFtwYWdlMVRpdGxlXSAtIFRoZSB0aXRsZSBvZiB0aGUgZmlyc3QgcGFnZS5cbiAqIEBwcm9wIHtzdHJpbmd9IFtwYWdlMlRpdGxlXSAtIFRoZSB0aXRsZSBvZiB0aGUgc2Vjb25kIHBhZ2UuXG4gKiBAcHJvcCB7W251bWJlciwgbnVtYmVyXX0gW3BhZ2VSYXRpb10gLSBUaGUgcmF0aW8gb2YgdGhlIHBhZ2VzLiAoaW4gaG9yaXpvbnRhbCBkaXJlY3Rpb24pXG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBEb3VibGVMYXlvdXRPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG91YmxlTGF5b3V0T3B0aW9ucyB7XG4gICAgc2hvd1RpdGxlPzogYm9vbGVhbjtcbiAgICBib3hlZD86IGJvb2xlYW47XG4gICAgYm94Q29sb3I/OiBGb3JlZ3JvdW5kQ29sb3IgfCBcIlwiOyAvLyBhZGQgY29sb3IgbGlzdCBmcm9tIGNoYWxrXG4gICAgYm94U3R5bGU/OiBcImJvbGRcIjtcbiAgICBjaGFuZ2VGb2N1c0tleTogc3RyaW5nO1xuICAgIGRpcmVjdGlvbj86IFwiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwiO1xuICAgIHBhZ2UxVGl0bGU/OiBzdHJpbmc7XG4gICAgcGFnZTJUaXRsZT86IHN0cmluZztcbiAgICBwYWdlUmF0aW8/OiBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG4vKipcbiAqIEBjbGFzcyBEb3VibGVMYXlvdXRcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIGEgbGF5b3V0IHRoYXQgaGFzIHR3byBwYWdlcy5cbiAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UxIFRoZSBmaXJzdCBwYWdlLlxuICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZTIgVGhlIHNlY29uZCBwYWdlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zIExheW91dCBvcHRpb25zLlxuICogQHBhcmFtIHtudW1iZXJ9IHNlbGVjdGVkIFRoZSBzZWxlY3RlZCBwYWdlLlxuICogQGV4YW1wbGUgY29uc3QgbGF5b3V0ID0gbmV3IERvdWJsZUxheW91dChwYWdlMSwgcGFnZTIsIHRydWUsIDApXG4gKi9cbmV4cG9ydCBjbGFzcyBEb3VibGVMYXlvdXQge1xuICAgIENNOiBDb25zb2xlTWFuYWdlclxuICAgIG9wdGlvbnM6IERvdWJsZUxheW91dE9wdGlvbnNcbiAgICBzZWxlY3RlZDogMCB8IDFcbiAgICBwYWdlMTogUGFnZUJ1aWxkZXJcbiAgICBwYWdlMjogUGFnZUJ1aWxkZXJcbiAgICBib3hCb2xkOiBib29sZWFuXG4gICAgcHJvcG9ydGlvbnM6IFtudW1iZXIsIG51bWJlcl1cbiAgICBwYWdlMlRpdGxlOiBzdHJpbmdcbiAgICBwYWdlMVRpdGxlOiBzdHJpbmdcbiAgICByZWFsV2lkdGg6IG51bWJlciB8IFtudW1iZXIsIG51bWJlcl0gPSAwXG4gICAgaXNPZGQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYWdlMSA6IFBhZ2VCdWlsZGVyLCBwYWdlMjogUGFnZUJ1aWxkZXIsIG9wdGlvbnM6IERvdWJsZUxheW91dE9wdGlvbnMsIHNlbGVjdGVkOiAwIHwgMSA9IDApIHtcbiAgICAgICAgLyoqIEBjb25zdCB7Q29uc29sZU1hbmFnZXJ9IENNIHRoZSBpbnN0YW5jZSBvZiBDb25zb2xlTWFuYWdlciAoc2luZ2xldG9uKSAqL1xuICAgICAgICB0aGlzLkNNID0gbmV3IENvbnNvbGVNYW5hZ2VyKClcblxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZFxuICAgICAgICB0aGlzLnBhZ2UxID0gcGFnZTFcbiAgICAgICAgdGhpcy5wYWdlMiA9IHBhZ2UyXG5cbiAgICAgICAgdGhpcy5ib3hCb2xkID0gdGhpcy5vcHRpb25zLmJveFN0eWxlID09PSBcImJvbGRcIiA/IHRydWUgOiBmYWxzZVxuICAgICAgICB0aGlzLnByb3BvcnRpb25zID0gdGhpcy5vcHRpb25zLnBhZ2VSYXRpbyB8fCBbMC43LCAwLjNdXG5cbiAgICAgICAgLyoqIEBjb25zdCB7c3RyaW5nfSBwYWdlMlRpdGxlIFRoZSB0aXRsZSBvZiBwYWdlMi4gKi9cbiAgICAgICAgdGhpcy5wYWdlMlRpdGxlID0gdGhpcy5vcHRpb25zLnBhZ2UyVGl0bGUgfHwgXCJcIlxuXG4gICAgICAgIC8qKiBAY29uc3Qge3N0cmluZ30gcGFnZTFUaXRsZSBUaGUgYXBwbGljYXRpb24gdGl0bGUuICovXG4gICAgICAgIHRoaXMucGFnZTFUaXRsZSA9IHRoaXMub3B0aW9ucy5wYWdlMVRpdGxlIHx8IFwiXCJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgcGFnZSBjb250ZW50LlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UgdGhlIHBhZ2UgdG8gYmUgYWRkZWRcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0IFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlKHBhZ2U6IFBhZ2VCdWlsZGVyLCBpbmRleDogbnVtYmVyKTogdm9pZCB7ICAvLyBUT0RPOiBcbiAgICAgICAgaWYgKGluZGV4ID09IDApIHtcbiAgICAgICAgICAgIHRoaXMucGFnZTEgPSBwYWdlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UyID0gcGFnZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBvdmVyd3JpdGUgdGhlIHBhZ2UgY29udGVudC5cbiAgICAgKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlIHRoZSBwYWdlIHRvIGJlIGFkZGVkXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlMShwYWdlOiBQYWdlQnVpbGRlcik6IHZvaWQgeyB0aGlzLnBhZ2UxID0gcGFnZSB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgcGFnZSBjb250ZW50LlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UgdGhlIHBhZ2UgdG8gYmUgYWRkZWRcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UyKHBhZ2U6IFBhZ2VCdWlsZGVyKTogdm9pZCB7IHRoaXMucGFnZTIgPSBwYWdlIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBwYWdlIHRpdGxlcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB0aXRsZXMgdGhlIHRpdGxlcyBvZiB0aGUgcGFnZXNcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFRpdGxlcyhbXCJQYWdlIDFcIiwgXCJQYWdlIDJcIl0pXG4gICAgICovXG4gICAgcHVibGljIHNldFRpdGxlcyh0aXRsZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMucGFnZTFUaXRsZSA9IHRpdGxlc1swXVxuICAgICAgICB0aGlzLnBhZ2UyVGl0bGUgPSB0aXRsZXNbMV1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgcGFnZSB0aXRsZSBhdCB0aGUgZ2l2ZW4gaW5kZXguXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIHRoZSB0aXRsZSBvZiB0aGUgcGFnZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIHBhZ2VcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFRpdGxlKFwiUGFnZSAxXCIsIDApXG4gICAgICovXG4gICAgcHVibGljIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4ID09IDApIHtcbiAgICAgICAgICAgIHRoaXMucGFnZTFUaXRsZSA9IHRpdGxlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UyVGl0bGUgPSB0aXRsZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgbGF5b3V0IGJvcmRlci5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGJvcmRlciBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYm9yZGVyXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRCb3JkZXIoYm9yZGVyOiBib29sZWFuKTogdm9pZCB7IHRoaXMub3B0aW9ucy5ib3hlZCA9IGJvcmRlciB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNob29zZSB0aGUgcGFnZSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gc2VsZWN0ZWQgMCBmb3IgcGFnZTEsIDEgZm9yIHBhZ2UyXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZChzZWxlY3RlZDogMCB8IDEpOiB2b2lkIHsgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHRoZSBzZWxlY3RlZCBwYWdlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IDAgZm9yIHBhZ2UxLCAxIGZvciBwYWdlMlxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBzd2l0Y2ggdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBjaGFuZ2VMYXlvdXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gMFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGFuZ2UgdGhlIHBhZ2UgcmF0aW8uXG4gICAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSByYXRpbyB0aGUgcmF0aW8gb2YgcGFnZXNcbiAgICAgKiBAbWVtYmVyb2YgUXVhZExheW91dFxuICAgICAqIEBleGFtcGxlIGxheW91dC5zZXRSYXRpbyhbMC40LCAwLjZdKVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRSYXRpbyhyYXRpbzogW251bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BvcnRpb25zID0gcmF0aW9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluY3JlYXNlIHRoZSBwYWdlIHJhdGlvIGJ5IHRoZSBnaXZlbiByYXRpbyB0byBhZGQuIChPbmx5IHdvcmtzIGlmIHRoZSBkaXJlY3Rpb24gaXMgaG9yaXpvbnRhbClcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcXVhbnRpdHkgdGhlIHJhdGlvIHRvIGFkZFxuICAgICAqIEBtZW1iZXJvZiBRdWFkTGF5b3V0XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LmluY3JlYXNlUmF0aW8oMC4wMSlcbiAgICAgKi9cbiAgICBwdWJsaWMgaW5jcmVhc2VSYXRpbyhxdWFudGl0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09IFwiaG9yaXpvbnRhbFwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcm9wb3J0aW9uc1swXSA8IDAuOSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvcG9ydGlvbnNbMF0gPSBOdW1iZXIoKHRoaXMucHJvcG9ydGlvbnNbMF0gKyBxdWFudGl0eSkudG9GaXhlZCgyKSlcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BvcnRpb25zWzFdID0gTnVtYmVyKCh0aGlzLnByb3BvcnRpb25zWzFdIC0gcXVhbnRpdHkpLnRvRml4ZWQoMikpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRlY3JlYXNlIHRoZSBwYWdlIHJhdGlvIGJ5IHRoZSBnaXZlbiByYXRpbyB0byBzdWJ0cmFjdC4gKE9ubHkgd29ya3MgaWYgdGhlIGRpcmVjdGlvbiBpcyBob3Jpem9udGFsKS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gcXVhbnRpdHkgdGhlIHJhdGlvIHRvIHN1YnRyYWN0XG4gICAgICogQG1lbWJlcm9mIFF1YWRMYXlvdXRcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZGVjcmVhc2VSYXRpbygwLjAxKVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNyZWFzZVJhdGlvKHF1YW50aXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BvcnRpb25zWzBdID4gMC4xKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wb3J0aW9uc1swXSA9IE51bWJlcigodGhpcy5wcm9wb3J0aW9uc1swXSAtIHF1YW50aXR5KS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgICAgIHRoaXMucHJvcG9ydGlvbnNbMV0gPSBOdW1iZXIoKHRoaXMucHJvcG9ydGlvbnNbMV0gKyBxdWFudGl0eSkudG9GaXhlZCgyKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyBhIHNpbmdsZSBsaW5lIG9mIHRoZSBsYXlvdXQgdG8gdGhlIHNjcmVlbi4gSXQgYWxzbyB0cmltIHRoZSBsaW5lIGlmIGl0IGlzIHRvbyBsb25nLlxuICAgICAqIEBwYXJhbSB7QXJyYXk8U3R5bGVkRWxlbWVudD59IGxpbmUgdGhlIGxpbmUgdG8gYmUgZHJhd25cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZUluZGV4IHRoZSBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgbGluZVxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGRyYXdMaW5lKGxpbmUgOiAgQXJyYXk8U3R5bGVkRWxlbWVudD4sIHNlY29uZExpbmU/IDogQXJyYXk8U3R5bGVkRWxlbWVudD4sIGluZGV4ID0gMCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaXIgPSAhdGhpcy5vcHRpb25zLmRpcmVjdGlvbiB8fCB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBcInZlcnRpY2FsXCIgPyBcInZlcnRpY2FsXCIgOiBcImhvcml6b250YWxcIlxuICAgICAgICBjb25zdCBic2l6ZSA9IHRoaXMub3B0aW9ucy5ib3hlZCA/IGRpciA9PT0gXCJ2ZXJ0aWNhbFwiID8gMiA6IDMgOiAwXG4gICAgICAgIGxldCB1bmZvcm1hdHRlZExpbmUgPSBbXCJcIl1cbiAgICAgICAgbGV0IG5ld0xpbmUgPSBbXG4gICAgICAgICAgICBbLi4ubGluZV1cbiAgICAgICAgXVxuICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgIGxpbmUuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMF0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3TGluZSA9IFtcbiAgICAgICAgICAgICAgICBbLi4ubGluZV0sXG4gICAgICAgICAgICAgICAgWy4uLnNlY29uZExpbmU/IHNlY29uZExpbmUgOiBsaW5lXVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgdW5mb3JtYXR0ZWRMaW5lLnB1c2goXCJcIilcbiAgICAgICAgICAgIGxpbmUuZm9yRWFjaCgoZWxlbWVudCA6IFN0eWxlZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMF0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2Vjb25kTGluZT8uZm9yRWFjaCgoZWxlbWVudCA6IFN0eWxlZEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmVbMV0gKz0gZWxlbWVudC50ZXh0XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmUuZmlsdGVyKChlLCBpKSA9PiBlLmxlbmd0aCA+IHRoaXMucmVhbFdpZHRoW2ldIC0gYnNpemUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZSA9IHVuZm9ybWF0dGVkTGluZS5tYXAoKGUsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZS5sZW5ndGggPiB0aGlzLnJlYWxXaWR0aFtpXSAtIGJzaXplKSB7IC8vIE5lZWQgdG8gdHJ1bmNhdGVcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMlxuICAgICAgICAgICAgICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbaV0gPSBbLi4uSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaW5lKSldIC8vIFNoYWxsb3cgY29weSBiZWNhdXNlIEkganVzdCB3YW50IHRvIG1vZGlmeSB0aGUgdmFsdWVzIGJ1dCBub3QgdGhlIG9yaWdpbmFsXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldID0gaSA9PT0gMCA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGluZSkpIDogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShzZWNvbmRMaW5lKSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBsZXQgZGlmZiA9IGUubGVuZ3RoIC0gdGhpcy5yZWFsV2lkdGhbaV0gKyAxXG5cbiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRydW5jYXRlZCB0ZXh0XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBuZXdMaW5lW2ldLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV3TGluZVtpXVtqXS50ZXh0Lmxlbmd0aCA+IGRpZmYgKyBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldW2pdLnRleHQgPSB0aGlzLkNNLnRydW5jYXRlKG5ld0xpbmVbaV1bal0udGV4dCwgKG5ld0xpbmVbaV1bal0udGV4dC5sZW5ndGggLSBkaWZmKSAtIG9mZnNldCwgZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZiAtPSBuZXdMaW5lW2ldW2pdLnRleHQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZVtpXS5zcGxpY2UoaiwgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdW5mb3JtYXR0ZWQgbGluZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3TGluZVtpXS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LnRleHQpLmpvaW4oXCJcIilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpciA9PT0gXCJ2ZXJ0aWNhbFwiKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSBuZXdMaW5lWzBdLnVuc2hpZnQoeyB0ZXh0OiBcIuKUglwiLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gaW5kZXggPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICBpZiAodW5mb3JtYXR0ZWRMaW5lWzBdLmxlbmd0aCA8PSB0aGlzLkNNLlNjcmVlbi53aWR0aCAtIGJzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3TGluZVswXS5wdXNoKHsgdGV4dDogYCR7XCIgXCIucmVwZWF0KCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIHVuZm9ybWF0dGVkTGluZVswXS5sZW5ndGgpIC0gYnNpemUpfWAsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIG5ld0xpbmVbMF0ucHVzaCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSBpbmRleCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKC4uLm5ld0xpbmVbMF0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXQ6IFN0eWxlZEVsZW1lbnRbXSA9IFtdXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSByZXQucHVzaCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgcmV0LnB1c2goLi4ubmV3TGluZVswXSlcbiAgICAgICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmVbMF0ubGVuZ3RoIDw9IHRoaXMucmVhbFdpZHRoWzBdIC0gYnNpemUpIHtcbiAgICAgICAgICAgICAgICByZXQucHVzaCh7IHRleHQ6IGAke1wiIFwiLnJlcGVhdCgodGhpcy5yZWFsV2lkdGhbMF0gLSB1bmZvcm1hdHRlZExpbmVbMF0ubGVuZ3RoKSAtIChic2l6ZSA+IDAgPyAyIDogMCkpfWAsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIHJldC5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIHJldC5wdXNoKC4uLm5ld0xpbmVbMV0pXG4gICAgICAgICAgICBpZiAodW5mb3JtYXR0ZWRMaW5lWzFdLmxlbmd0aCA8PSB0aGlzLnJlYWxXaWR0aFsxXSAtIGJzaXplKSB7XG4gICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0ZXh0OiBgJHtcIiBcIi5yZXBlYXQoKHRoaXMucmVhbFdpZHRoWzFdIC0gdW5mb3JtYXR0ZWRMaW5lWzFdLmxlbmd0aCkgLSAoYnNpemUgPiAwID8gMSA6IDApKX1gLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSByZXQucHVzaCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAxID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoLi4ucmV0KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IHRoZSBsYXlvdXQgdG8gdGhlIHNjcmVlbi5cbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LmRyYXcoKVxuICAgICAqL1xuICAgIHB1YmxpYyBkcmF3KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT2RkID0gdGhpcy5DTS5TY3JlZW4ud2lkdGggJSAyID09PSAxXG4gICAgICAgIGlmICghdGhpcy5vcHRpb25zLmRpcmVjdGlvbiB8fCB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgIHRoaXMucmVhbFdpZHRoID0gW01hdGgucm91bmQodGhpcy5DTS5TY3JlZW4ud2lkdGggKiAxKSwgTWF0aC5yb3VuZCh0aGlzLkNNLlNjcmVlbi53aWR0aCAqIDEpXVxuICAgICAgICAgICAgY29uc3QgdHJpbW1lZFRpdGxlID0gW3RoaXMuQ00udHJ1bmNhdGUodGhpcy5wYWdlMVRpdGxlLCB0aGlzLnJlYWxXaWR0aFswXSAtIDQsIGZhbHNlKSwgdGhpcy5DTS50cnVuY2F0ZSh0aGlzLnBhZ2UyVGl0bGUsIHRoaXMucmVhbFdpZHRoWzFdIC0gNCwgZmFsc2UpXVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgeyAvLyBEcmF3IHBhZ2VzIHdpdGggYm9yZGVyc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUjOKUgCR7dHJpbW1lZFRpdGxlWzBdfSR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSB0cmltbWVkVGl0bGVbMF0ubGVuZ3RoIC0gMyl94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDMpfeKUkGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UxLmdldENvbnRlbnQoKS5mb3JFYWNoKChsaW5lOiBTdHlsZWRFbGVtZW50W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluZShsaW5lLCB1bmRlZmluZWQsIDApXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilJzilIAke3RyaW1tZWRUaXRsZVsxXX0ke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gdHJpbW1lZFRpdGxlWzFdLmxlbmd0aCAtIDMpfeKUpGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pScJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDIpfeKUpGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTIuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUlCR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSAyKX3ilJhgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMSA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSB7IC8vIERyYXcgcGFnZXMgd2l0aG91dCBib3JkZXJzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBgJHt0cmltbWVkVGl0bGVbMF19YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTEuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYCR7dHJpbW1lZFRpdGxlWzFdfWAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAxID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2UyLmdldENvbnRlbnQoKS5mb3JFYWNoKChsaW5lOiBTdHlsZWRFbGVtZW50W10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluZShsaW5lLCB1bmRlZmluZWQsIDEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gRHJhdyBob3Jpem9udGFsbHkgIFxuICAgICAgICAgICAgdGhpcy5yZWFsV2lkdGggPSBbTWF0aC5yb3VuZCh0aGlzLkNNLlNjcmVlbi53aWR0aCAqIHRoaXMucHJvcG9ydGlvbnNbMF0pLCBNYXRoLnJvdW5kKHRoaXMuQ00uU2NyZWVuLndpZHRoICogdGhpcy5wcm9wb3J0aW9uc1sxXSldXG4gICAgICAgICAgICBjb25zdCB0cmltbWVkVGl0bGUgPSBbdGhpcy5DTS50cnVuY2F0ZSh0aGlzLnBhZ2UxVGl0bGUsIHRoaXMucmVhbFdpZHRoWzBdIC0gNCwgZmFsc2UpLCB0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZTJUaXRsZSwgdGhpcy5yZWFsV2lkdGhbMV0gLSAzLCBmYWxzZSldXG4gICAgICAgICAgICBjb25zdCBtYXhQYWdlSGVpZ2h0ID0gTWF0aC5tYXgodGhpcy5wYWdlMS5nZXRWaWV3ZWRQYWdlSGVpZ2h0KCksIHRoaXMucGFnZTIuZ2V0Vmlld2VkUGFnZUhlaWdodCgpKVxuICAgICAgICAgICAgY29uc3QgcDEgPSB0aGlzLnBhZ2UxLmdldENvbnRlbnQoKVxuICAgICAgICAgICAgY29uc3QgcDIgPSB0aGlzLnBhZ2UyLmdldENvbnRlbnQoKVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgeyAvLyBEcmF3IHBhZ2VzIHdpdGggYm9yZGVyc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUjOKUgCR7dHJpbW1lZFRpdGxlWzBdfSR7XCLilIBcIi5yZXBlYXQodGhpcy5yZWFsV2lkdGhbMF0gLSB0cmltbWVkVGl0bGVbMF0ubGVuZ3RoIC0gMyl94pSsYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0sIHsgdGV4dDogYOKUgCR7dHJpbW1lZFRpdGxlWzFdfSR7XCLilIBcIi5yZXBlYXQodGhpcy5yZWFsV2lkdGhbMV0gLSB0cmltbWVkVGl0bGVbMV0ubGVuZ3RoIC0gMil94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIDMpfeKUrGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9LCB7IHRleHQ6IGDilIAke1wi4pSAXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzFdIC0gMil94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4UGFnZUhlaWdodDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUocDFbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSwgcDJbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gRHJhdyB0aGUgYm90dG9tIGJvcmRlclxuICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUlCR7XCLilIBcIi5yZXBlYXQodGhpcy5yZWFsV2lkdGhbMF0gLSAyKX3ilLRgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSwgeyB0ZXh0OiBgJHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFsxXSAtIDEpfeKUmGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAxID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gRHJhdyBwYWdlcyB3aXRob3V0IGJvcmRlcnNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGAke3RyaW1tZWRUaXRsZVswXX0ke1wiIFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIHRyaW1tZWRUaXRsZVswXS5sZW5ndGgpfSR7dHJpbW1lZFRpdGxlWzFdfWAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBhZ2VIZWlnaHQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKHAxW2ldIHx8IFt7IHRleHQ6IFwiXCIsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfV0sIHAyW2ldIHx8IFt7IHRleHQ6IFwiXCIsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEb3VibGVMYXlvdXQiXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG91YmxlTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGF5b3V0L0RvdWJsZUxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0scUJBQXFCLENBQUE7QUErQmpFOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFhckIsWUFBbUIsS0FBbUIsRUFBRSxLQUFrQixFQUFFLE9BQTRCLEVBQUUsV0FBa0IsQ0FBQztRQUg3RyxjQUFTLEdBQThCLENBQUMsQ0FBQTtRQUlwQyw0RUFBNEU7UUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBRTlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBRWxCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtRQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRXZELHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQTtRQUUvQyx3REFBd0Q7UUFDeEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUE7SUFDbkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsSUFB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QUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2lCQUNoWjtxQkFBTTtvQkFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVB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QUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7aUJBQzlHO2FBQ0o7U0FDSjtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9yZWdyb3VuZENvbG9yIH0gZnJvbSBcImNoYWxrXCJcbmltcG9ydCB7IENvbnNvbGVNYW5hZ2VyLCBQYWdlQnVpbGRlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IFN0eWxlZEVsZW1lbnQgfSBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIERvdWJsZUxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZUxheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age3N0cmluZ30gW2NoYW5nZUZvY3VzS2V5XSAtIFRoZSBrZXkgdGhhdCBzaG91bGQgYmUgcHJlc3NlZCB0byBjaGFuZ2UgdGhlIGZvY3VzLlxuICogQHByb3Age1wiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwifSBbZGlyZWN0aW9uXSAtIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxheW91dC5cbiAqIEBwcm9wIHtzdHJpbmd9IFtwYWdlMVRpdGxlXSAtIFRoZSB0aXRsZSBvZiB0aGUgZmlyc3QgcGFnZS5cbiAqIEBwcm9wIHtzdHJpbmd9IFtwYWdlMlRpdGxlXSAtIFRoZSB0aXRsZSBvZiB0aGUgc2Vjb25kIHBhZ2UuXG4gKiBAcHJvcCB7W251bWJlciwgbnVtYmVyXX0gW3BhZ2VSYXRpb10gLSBUaGUgcmF0aW8gb2YgdGhlIHBhZ2VzLiAoaW4gaG9yaXpvbnRhbCBkaXJlY3Rpb24pXG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBEb3VibGVMYXlvdXRPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG91YmxlTGF5b3V0T3B0aW9ucyB7XG4gICAgc2hvd1RpdGxlPzogYm9vbGVhbjtcbiAgICBib3hlZD86IGJvb2xlYW47XG4gICAgYm94Q29sb3I/OiBGb3JlZ3JvdW5kQ29sb3IgfCBcIlwiOyAvLyBhZGQgY29sb3IgbGlzdCBmcm9tIGNoYWxrXG4gICAgYm94U3R5bGU/OiBcImJvbGRcIjtcbiAgICBjaGFuZ2VGb2N1c0tleTogc3RyaW5nO1xuICAgIGRpcmVjdGlvbj86IFwiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwiO1xuICAgIHBhZ2UxVGl0bGU/OiBzdHJpbmc7XG4gICAgcGFnZTJUaXRsZT86IHN0cmluZztcbiAgICBwYWdlUmF0aW8/OiBbbnVtYmVyLCBudW1iZXJdO1xufVxuXG4vKipcbiAqIEBjbGFzcyBEb3VibGVMYXlvdXRcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGNsYXNzIGlzIGEgbGF5b3V0IHRoYXQgaGFzIHR3byBwYWdlcy5cbiAqIFxuICogIVtkb3VibGUgbGF5b3V0XShodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xNDkwNzk4Ny8xNzA5OTY5NTctY2IyODQxNGItN2JlMi00YWEwLTkzOGItZjZkMTcyNGNmYTRjLnBuZylcbiAqIFxuICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZTEgVGhlIGZpcnN0IHBhZ2UuXG4gKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlMiBUaGUgc2Vjb25kIHBhZ2UuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMgTGF5b3V0IG9wdGlvbnMuXG4gKiBAcGFyYW0ge251bWJlcn0gc2VsZWN0ZWQgVGhlIHNlbGVjdGVkIHBhZ2UuXG4gKiBAZXhhbXBsZSBjb25zdCBsYXlvdXQgPSBuZXcgRG91YmxlTGF5b3V0KHBhZ2UxLCBwYWdlMiwgdHJ1ZSwgMClcbiAqL1xuZXhwb3J0IGNsYXNzIERvdWJsZUxheW91dCB7XG4gICAgQ006IENvbnNvbGVNYW5hZ2VyXG4gICAgb3B0aW9uczogRG91YmxlTGF5b3V0T3B0aW9uc1xuICAgIHNlbGVjdGVkOiAwIHwgMVxuICAgIHBhZ2UxOiBQYWdlQnVpbGRlclxuICAgIHBhZ2UyOiBQYWdlQnVpbGRlclxuICAgIGJveEJvbGQ6IGJvb2xlYW5cbiAgICBwcm9wb3J0aW9uczogW251bWJlciwgbnVtYmVyXVxuICAgIHBhZ2UyVGl0bGU6IHN0cmluZ1xuICAgIHBhZ2UxVGl0bGU6IHN0cmluZ1xuICAgIHJlYWxXaWR0aDogbnVtYmVyIHwgW251bWJlciwgbnVtYmVyXSA9IDBcbiAgICBpc09kZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhZ2UxIDogUGFnZUJ1aWxkZXIsIHBhZ2UyOiBQYWdlQnVpbGRlciwgb3B0aW9uczogRG91YmxlTGF5b3V0T3B0aW9ucywgc2VsZWN0ZWQ6IDAgfCAxID0gMCkge1xuICAgICAgICAvKiogQGNvbnN0IHtDb25zb2xlTWFuYWdlcn0gQ00gdGhlIGluc3RhbmNlIG9mIENvbnNvbGVNYW5hZ2VyIChzaW5nbGV0b24pICovXG4gICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgICAgdGhpcy5zZWxlY3RlZCA9IHNlbGVjdGVkXG4gICAgICAgIHRoaXMucGFnZTEgPSBwYWdlMVxuICAgICAgICB0aGlzLnBhZ2UyID0gcGFnZTJcblxuICAgICAgICB0aGlzLmJveEJvbGQgPSB0aGlzLm9wdGlvbnMuYm94U3R5bGUgPT09IFwiYm9sZFwiID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgIHRoaXMucHJvcG9ydGlvbnMgPSB0aGlzLm9wdGlvbnMucGFnZVJhdGlvIHx8IFswLjcsIDAuM11cblxuICAgICAgICAvKiogQGNvbnN0IHtzdHJpbmd9IHBhZ2UyVGl0bGUgVGhlIHRpdGxlIG9mIHBhZ2UyLiAqL1xuICAgICAgICB0aGlzLnBhZ2UyVGl0bGUgPSB0aGlzLm9wdGlvbnMucGFnZTJUaXRsZSB8fCBcIlwiXG5cbiAgICAgICAgLyoqIEBjb25zdCB7c3RyaW5nfSBwYWdlMVRpdGxlIFRoZSBhcHBsaWNhdGlvbiB0aXRsZS4gKi9cbiAgICAgICAgdGhpcy5wYWdlMVRpdGxlID0gdGhpcy5vcHRpb25zLnBhZ2UxVGl0bGUgfHwgXCJcIlxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSB0aGUgcGFnZSB0byBiZSBhZGRlZFxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXQgXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UocGFnZTogUGFnZUJ1aWxkZXIsIGluZGV4OiBudW1iZXIpOiB2b2lkIHsgIC8vIFRPRE86IFxuICAgICAgICBpZiAoaW5kZXggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlMSA9IHBhZ2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFnZTIgPSBwYWdlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgcGFnZSBjb250ZW50LlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UgdGhlIHBhZ2UgdG8gYmUgYWRkZWRcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2UxKHBhZ2U6IFBhZ2VCdWlsZGVyKTogdm9pZCB7IHRoaXMucGFnZTEgPSBwYWdlIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSB0aGUgcGFnZSB0byBiZSBhZGRlZFxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZTIocGFnZTogUGFnZUJ1aWxkZXIpOiB2b2lkIHsgdGhpcy5wYWdlMiA9IHBhZ2UgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIHBhZ2UgdGl0bGVzLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHRpdGxlcyB0aGUgdGl0bGVzIG9mIHRoZSBwYWdlc1xuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuc2V0VGl0bGVzKFtcIlBhZ2UgMVwiLCBcIlBhZ2UgMlwiXSlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VGl0bGVzKHRpdGxlczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5wYWdlMVRpdGxlID0gdGl0bGVzWzBdXG4gICAgICAgIHRoaXMucGFnZTJUaXRsZSA9IHRpdGxlc1sxXVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBwYWdlIHRpdGxlIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgdGhlIHRpdGxlIG9mIHRoZSBwYWdlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IHRoZSBpbmRleCBvZiB0aGUgcGFnZVxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuc2V0VGl0bGUoXCJQYWdlIDFcIiwgMClcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoaW5kZXggPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5wYWdlMVRpdGxlID0gdGl0bGVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGFnZTJUaXRsZSA9IHRpdGxlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBsYXlvdXQgYm9yZGVyLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9yZGVyIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBib3JkZXJcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldEJvcmRlcihib3JkZXI6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5vcHRpb25zLmJveGVkID0gYm9yZGVyIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hvb3NlIHRoZSBwYWdlIHRvIGJlIGhpZ2hsaWdodGVkLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzZWxlY3RlZCAwIGZvciBwYWdlMSwgMSBmb3IgcGFnZTJcbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkOiAwIHwgMSk6IHZvaWQgeyB0aGlzLnNlbGVjdGVkID0gc2VsZWN0ZWQgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAgICogQHJldHVybnMge251bWJlcn0gMCBmb3IgcGFnZTEsIDEgZm9yIHBhZ2UyXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZWxlY3RlZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IHN3aXRjaCB0aGUgc2VsZWN0ZWQgcGFnZS5cbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAbWVtYmVyb2YgRG91YmxlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIGNoYW5nZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IDFcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAwXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoYW5nZSB0aGUgcGFnZSByYXRpby5cbiAgICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHJhdGlvIHRoZSByYXRpbyBvZiBwYWdlc1xuICAgICAqIEBtZW1iZXJvZiBRdWFkTGF5b3V0XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFJhdGlvKFswLjQsIDAuNl0pXG4gICAgICovXG4gICAgcHVibGljIHNldFJhdGlvKHJhdGlvOiBbbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcG9ydGlvbnMgPSByYXRpb1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5jcmVhc2UgdGhlIHBhZ2UgcmF0aW8gYnkgdGhlIGdpdmVuIHJhdGlvIHRvIGFkZC4gKE9ubHkgd29ya3MgaWYgdGhlIGRpcmVjdGlvbiBpcyBob3Jpem9udGFsKVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBxdWFudGl0eSB0aGUgcmF0aW8gdG8gYWRkXG4gICAgICogQG1lbWJlcm9mIFF1YWRMYXlvdXRcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuaW5jcmVhc2VSYXRpbygwLjAxKVxuICAgICAqL1xuICAgIHB1YmxpYyBpbmNyZWFzZVJhdGlvKHF1YW50aXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT0gXCJob3Jpem9udGFsXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BvcnRpb25zWzBdIDwgMC45KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wb3J0aW9uc1swXSA9IE51bWJlcigodGhpcy5wcm9wb3J0aW9uc1swXSArIHF1YW50aXR5KS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgICAgIHRoaXMucHJvcG9ydGlvbnNbMV0gPSBOdW1iZXIoKHRoaXMucHJvcG9ydGlvbnNbMV0gLSBxdWFudGl0eSkudG9GaXhlZCgyKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGVjcmVhc2UgdGhlIHBhZ2UgcmF0aW8gYnkgdGhlIGdpdmVuIHJhdGlvIHRvIHN1YnRyYWN0LiAoT25seSB3b3JrcyBpZiB0aGUgZGlyZWN0aW9uIGlzIGhvcml6b250YWwpLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBxdWFudGl0eSB0aGUgcmF0aW8gdG8gc3VidHJhY3RcbiAgICAgKiBAbWVtYmVyb2YgUXVhZExheW91dFxuICAgICAqIEBleGFtcGxlIGxheW91dC5kZWNyZWFzZVJhdGlvKDAuMDEpXG4gICAgICovXG4gICAgcHVibGljIGRlY3JlYXNlUmF0aW8ocXVhbnRpdHk6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PSBcImhvcml6b250YWxcIikge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJvcG9ydGlvbnNbMF0gPiAwLjEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BvcnRpb25zWzBdID0gTnVtYmVyKCh0aGlzLnByb3BvcnRpb25zWzBdIC0gcXVhbnRpdHkpLnRvRml4ZWQoMikpXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wb3J0aW9uc1sxXSA9IE51bWJlcigodGhpcy5wcm9wb3J0aW9uc1sxXSArIHF1YW50aXR5KS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IGEgc2luZ2xlIGxpbmUgb2YgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLiBJdCBhbHNvIHRyaW0gdGhlIGxpbmUgaWYgaXQgaXMgdG9vIGxvbmcuXG4gICAgICogQHBhcmFtIHtBcnJheTxTdHlsZWRFbGVtZW50Pn0gbGluZSB0aGUgbGluZSB0byBiZSBkcmF3blxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lSW5kZXggdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBsaW5lXG4gICAgICogQG1lbWJlcm9mIERvdWJsZUxheW91dFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqL1xuICAgIHByaXZhdGUgZHJhd0xpbmUobGluZSA6ICBBcnJheTxTdHlsZWRFbGVtZW50Piwgc2Vjb25kTGluZT8gOiBBcnJheTxTdHlsZWRFbGVtZW50PiwgaW5kZXggPSAwKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpciA9ICF0aGlzLm9wdGlvbnMuZGlyZWN0aW9uIHx8IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiA/IFwidmVydGljYWxcIiA6IFwiaG9yaXpvbnRhbFwiXG4gICAgICAgIGNvbnN0IGJzaXplID0gdGhpcy5vcHRpb25zLmJveGVkID8gZGlyID09PSBcInZlcnRpY2FsXCIgPyAyIDogMyA6IDBcbiAgICAgICAgbGV0IHVuZm9ybWF0dGVkTGluZSA9IFtcIlwiXVxuICAgICAgICBsZXQgbmV3TGluZSA9IFtcbiAgICAgICAgICAgIFsuLi5saW5lXVxuICAgICAgICBdXG4gICAgICAgIGlmIChkaXIgPT09IFwidmVydGljYWxcIikge1xuICAgICAgICAgICAgbGluZS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZVswXSArPSBlbGVtZW50LnRleHRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdMaW5lID0gW1xuICAgICAgICAgICAgICAgIFsuLi5saW5lXSxcbiAgICAgICAgICAgICAgICBbLi4uc2Vjb25kTGluZT8gc2Vjb25kTGluZSA6IGxpbmVdXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB1bmZvcm1hdHRlZExpbmUucHVzaChcIlwiKVxuICAgICAgICAgICAgbGluZS5mb3JFYWNoKChlbGVtZW50IDogU3R5bGVkRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZVswXSArPSBlbGVtZW50LnRleHRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBzZWNvbmRMaW5lPy5mb3JFYWNoKChlbGVtZW50IDogU3R5bGVkRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZVsxXSArPSBlbGVtZW50LnRleHRcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZS5maWx0ZXIoKGUsIGkpID0+IGUubGVuZ3RoID4gdGhpcy5yZWFsV2lkdGhbaV0gLSBic2l6ZSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdW5mb3JtYXR0ZWRMaW5lID0gdW5mb3JtYXR0ZWRMaW5lLm1hcCgoZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlLmxlbmd0aCA+IHRoaXMucmVhbFdpZHRoW2ldIC0gYnNpemUpIHsgLy8gTmVlZCB0byB0cnVuY2F0ZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkaXIgPT09IFwidmVydGljYWxcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZVtpXSA9IFsuLi5KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmUpKV0gLy8gU2hhbGxvdyBjb3B5IGJlY2F1c2UgSSBqdXN0IHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZXMgYnV0IG5vdCB0aGUgb3JpZ2luYWxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbaV0gPSBpID09PSAwID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShsaW5lKSkgOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNlY29uZExpbmUpKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGxldCBkaWZmID0gZS5sZW5ndGggLSB0aGlzLnJlYWxXaWR0aFtpXSArIDFcblxuICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgdHJ1bmNhdGVkIHRleHRcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IG5ld0xpbmVbaV0ubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXdMaW5lW2ldW2pdLnRleHQubGVuZ3RoID4gZGlmZiArIG9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbaV1bal0udGV4dCA9IHRoaXMuQ00udHJ1bmNhdGUobmV3TGluZVtpXVtqXS50ZXh0LCAobmV3TGluZVtpXVtqXS50ZXh0Lmxlbmd0aCAtIGRpZmYpIC0gb2Zmc2V0LCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmIC09IG5ld0xpbmVbaV1bal0udGV4dC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2ldLnNwbGljZShqLCAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB1bmZvcm1hdHRlZCBsaW5lXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdMaW5lW2ldLm1hcChlbGVtZW50ID0+IGVsZW1lbnQudGV4dCkuam9pbihcIlwiKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlyID09PSBcInZlcnRpY2FsXCIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIG5ld0xpbmVbMF0udW5zaGlmdCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSBpbmRleCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmVbMF0ubGVuZ3RoIDw9IHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gYnNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdMaW5lWzBdLnB1c2goeyB0ZXh0OiBgJHtcIiBcIi5yZXBlYXQoKHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gdW5mb3JtYXR0ZWRMaW5lWzBdLmxlbmd0aCkgLSBic2l6ZSl9YCwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgbmV3TGluZVswXS5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IGluZGV4ID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoLi4ubmV3TGluZVswXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHJldDogU3R5bGVkRWxlbWVudFtdID0gW11cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIHJldC5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICByZXQucHVzaCguLi5uZXdMaW5lWzBdKVxuICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZVswXS5sZW5ndGggPD0gdGhpcy5yZWFsV2lkdGhbMF0gLSBic2l6ZSkge1xuICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdGV4dDogYCR7XCIgXCIucmVwZWF0KCh0aGlzLnJlYWxXaWR0aFswXSAtIHVuZm9ybWF0dGVkTGluZVswXS5sZW5ndGgpIC0gKGJzaXplID4gMCA/IDIgOiAwKSl9YCwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgcmV0LnB1c2goeyB0ZXh0OiBcIuKUglwiLCBzdHlsZTogeyBjb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgcmV0LnB1c2goLi4ubmV3TGluZVsxXSlcbiAgICAgICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmVbMV0ubGVuZ3RoIDw9IHRoaXMucmVhbFdpZHRoWzFdIC0gYnNpemUpIHtcbiAgICAgICAgICAgICAgICByZXQucHVzaCh7IHRleHQ6IGAke1wiIFwiLnJlcGVhdCgodGhpcy5yZWFsV2lkdGhbMV0gLSB1bmZvcm1hdHRlZExpbmVbMV0ubGVuZ3RoKSAtIChic2l6ZSA+IDAgPyAxIDogMCkpfWAsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIHJldC5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSguLi5yZXQpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLlxuICAgICAqIEBtZW1iZXJvZiBEb3VibGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZHJhdygpXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPZGQgPSB0aGlzLkNNLlNjcmVlbi53aWR0aCAlIDIgPT09IDFcbiAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuZGlyZWN0aW9uIHx8IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24gPT09IFwidmVydGljYWxcIikge1xuICAgICAgICAgICAgdGhpcy5yZWFsV2lkdGggPSBbTWF0aC5yb3VuZCh0aGlzLkNNLlNjcmVlbi53aWR0aCAqIDEpLCBNYXRoLnJvdW5kKHRoaXMuQ00uU2NyZWVuLndpZHRoICogMSldXG4gICAgICAgICAgICBjb25zdCB0cmltbWVkVGl0bGUgPSBbdGhpcy5DTS50cnVuY2F0ZSh0aGlzLnBhZ2UxVGl0bGUsIHRoaXMucmVhbFdpZHRoWzBdIC0gNCwgZmFsc2UpLCB0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZTJUaXRsZSwgdGhpcy5yZWFsV2lkdGhbMV0gLSA0LCBmYWxzZSldXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSB7IC8vIERyYXcgcGFnZXMgd2l0aCBib3JkZXJzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHt0cmltbWVkVGl0bGVbMF19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIHRyaW1tZWRUaXRsZVswXS5sZW5ndGggLSAzKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilIzilIAke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gMyl94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTEuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUnOKUgCR7dHJpbW1lZFRpdGxlWzFdfSR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSB0cmltbWVkVGl0bGVbMV0ubGVuZ3RoIC0gMyl94pSkYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilJwke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gMil94pSkYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlMi5nZXRDb250ZW50KCkuZm9yRWFjaCgobGluZTogU3R5bGVkRWxlbWVudFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSwgdW5kZWZpbmVkLCAxKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDIpfeKUmGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAxID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gRHJhdyBwYWdlcyB3aXRob3V0IGJvcmRlcnNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGAke3RyaW1tZWRUaXRsZVswXX1gLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlMS5nZXRDb250ZW50KCkuZm9yRWFjaCgobGluZTogU3R5bGVkRWxlbWVudFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSwgdW5kZWZpbmVkLCAwKVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBgJHt0cmltbWVkVGl0bGVbMV19YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucGFnZTIuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUsIHVuZGVmaW5lZCwgMSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgeyAvLyBEcmF3IGhvcml6b250YWxseSAgXG4gICAgICAgICAgICB0aGlzLnJlYWxXaWR0aCA9IFtNYXRoLnJvdW5kKHRoaXMuQ00uU2NyZWVuLndpZHRoICogdGhpcy5wcm9wb3J0aW9uc1swXSksIE1hdGgucm91bmQodGhpcy5DTS5TY3JlZW4ud2lkdGggKiB0aGlzLnByb3BvcnRpb25zWzFdKV1cbiAgICAgICAgICAgIGNvbnN0IHRyaW1tZWRUaXRsZSA9IFt0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZTFUaXRsZSwgdGhpcy5yZWFsV2lkdGhbMF0gLSA0LCBmYWxzZSksIHRoaXMuQ00udHJ1bmNhdGUodGhpcy5wYWdlMlRpdGxlLCB0aGlzLnJlYWxXaWR0aFsxXSAtIDMsIGZhbHNlKV1cbiAgICAgICAgICAgIGNvbnN0IG1heFBhZ2VIZWlnaHQgPSBNYXRoLm1heCh0aGlzLnBhZ2UxLmdldFZpZXdlZFBhZ2VIZWlnaHQoKSwgdGhpcy5wYWdlMi5nZXRWaWV3ZWRQYWdlSGVpZ2h0KCkpXG4gICAgICAgICAgICBjb25zdCBwMSA9IHRoaXMucGFnZTEuZ2V0Q29udGVudCgpXG4gICAgICAgICAgICBjb25zdCBwMiA9IHRoaXMucGFnZTIuZ2V0Q29udGVudCgpXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSB7IC8vIERyYXcgcGFnZXMgd2l0aCBib3JkZXJzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHt0cmltbWVkVGl0bGVbMF19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIHRyaW1tZWRUaXRsZVswXS5sZW5ndGggLSAzKX3ilKxgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMCA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSwgeyB0ZXh0OiBg4pSAJHt0cmltbWVkVGl0bGVbMV19JHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFsxXSAtIHRyaW1tZWRUaXRsZVsxXS5sZW5ndGggLSAyKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMSA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilIzilIAke1wi4pSAXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzBdIC0gMyl94pSsYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0sIHsgdGV4dDogYOKUgCR7XCLilIBcIi5yZXBlYXQodGhpcy5yZWFsV2lkdGhbMV0gLSAyKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5zZWxlY3RlZCA9PT0gMSA/IHRoaXMub3B0aW9ucy5ib3hDb2xvciA6IFwid2hpdGVcIiwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXhQYWdlSGVpZ2h0OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluZShwMVtpXSB8fCBbeyB0ZXh0OiBcIlwiLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH1dLCBwMltpXSB8fCBbeyB0ZXh0OiBcIlwiLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH1dKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEcmF3IHRoZSBib3R0b20gYm9yZGVyXG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh0aGlzLnJlYWxXaWR0aFswXSAtIDIpfeKUtGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLnNlbGVjdGVkID09PSAwID8gdGhpcy5vcHRpb25zLmJveENvbG9yIDogXCJ3aGl0ZVwiLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9LCB7IHRleHQ6IGAke1wi4pSAXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzFdIC0gMSl94pSYYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDEgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBEcmF3IHBhZ2VzIHdpdGhvdXQgYm9yZGVyc1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYCR7dHJpbW1lZFRpdGxlWzBdfSR7XCIgXCIucmVwZWF0KHRoaXMucmVhbFdpZHRoWzBdIC0gdHJpbW1lZFRpdGxlWzBdLmxlbmd0aCl9JHt0cmltbWVkVGl0bGVbMV19YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMuc2VsZWN0ZWQgPT09IDAgPyB0aGlzLm9wdGlvbnMuYm94Q29sb3IgOiBcIndoaXRlXCIsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4UGFnZUhlaWdodDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUocDFbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSwgcDJbaV0gfHwgW3sgdGV4dDogXCJcIiwgc3R5bGU6IHsgY29sb3I6IFwiXCIgfSB9XSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERvdWJsZUxheW91dCJdfQ== |
@@ -36,2 +36,5 @@ import { ForegroundColor } from "chalk"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![change ratio](https://user-images.githubusercontent.com/14907987/170999347-868eac7b-6bdf-4147-bcb0-b7465282ed5f.gif) | ||
* | ||
* @param {PageBuilder[]} pages The pages that should be shown. | ||
@@ -38,0 +41,0 @@ * @param {boolean} options Layout options. |
@@ -8,2 +8,5 @@ import { ConsoleManager } from "../../ConsoleGui.js"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![change ratio](https://user-images.githubusercontent.com/14907987/170999347-868eac7b-6bdf-4147-bcb0-b7465282ed5f.gif) | ||
* | ||
* @param {PageBuilder[]} pages The pages that should be shown. | ||
@@ -222,2 +225,2 @@ * @param {boolean} options Layout options. | ||
export default LayoutManager; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xheW91dC9MYXlvdXRNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLFlBQXFDLE1BQU0sbUJBQW1CLENBQUE7QUFDckUsT0FBTyxVQUFpQyxNQUFNLGlCQUFpQixDQUFBO0FBQy9ELE9BQU8sWUFBcUMsTUFBTSxtQkFBbUIsQ0FBQTtBQThCckU7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFTdEIsWUFBbUIsS0FBb0IsRUFBRSxPQUFzQjtRQUx4RCxVQUFLLEdBQW1DLEVBQUUsQ0FBQTtRQUN6QyxlQUFVLEdBQWEsRUFBRSxDQUFBO1FBdUVqQzs7Ozs7O1dBTUc7UUFDSyxtQkFBYyxHQUFHLENBQUMsQ0FBVSxFQUFxQixFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxZQUFZLFlBQVksQ0FBQTtRQUNwQyxDQUFDLENBQUE7UUEzRUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO1NBQ3ZCO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUNwQiw0RUFBNEU7WUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1lBRzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQzVCLENBQUMsQ0FBQyxDQUFBO1lBRUYsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElB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QUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBaUIsQ0FBQyxDQUFBO1NBQzdDO0lBQ0wsQ0FBQztJQUVEOzs7O1FBSUk7SUFDRyxXQUFXO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUE7U0FDOUI7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUM7SUFFRDs7OztRQUlJO0lBQ0csWUFBWTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFBO1NBQzdCO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFFBQWdCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN0QztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDdEM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFFRCxlQUFlLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcmVncm91bmRDb2xvciB9IGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgeyBDb25zb2xlTWFuYWdlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCBQYWdlQnVpbGRlciBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuaW1wb3J0IERvdWJsZUxheW91dCwgeyBEb3VibGVMYXlvdXRPcHRpb25zIH0gZnJvbSBcIi4vRG91YmxlTGF5b3V0LmpzXCJcbmltcG9ydCBRdWFkTGF5b3V0LCB7IFF1YWRMYXlvdXRPcHRpb25zIH0gZnJvbSBcIi4vUXVhZExheW91dC5qc1wiXG5pbXBvcnQgU2luZ2xlTGF5b3V0LCB7IFNpbmdsZUxheW91dE9wdGlvbnMgfSBmcm9tIFwiLi9TaW5nbGVMYXlvdXQuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIGxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IExheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age1wic2luZ2xlXCIgfCBcImRvdWJsZVwiIHwgXCJ0cmlwbGVcIiB8IFwicXVhZFwifSBbdHlwZV0gLSBUaGUgdHlwZSBvZiB0aGUgbGF5b3V0LlxuICogQHByb3Age3N0cmluZ30gW2NoYW5nZUZvY3VzS2V5XSAtIFRoZSBrZXkgdGhhdCBzaG91bGQgYmUgcHJlc3NlZCB0byBjaGFuZ2UgdGhlIGZvY3VzLlxuICogQHByb3Age1wiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwifSBbZGlyZWN0aW9uXSAtIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxheW91dC5cbiAqIEBwcm9wIHtzdHJpbmdbXX0gW3BhZ2VUaXRsZXNdIC0gVGhlIHRpdGxlIG9mIHRoZSBmaXJzdCBwYWdlLlxuICogQHByb3Age1tudW1iZXIsIG51bWJlcl0gfCBbW251bWJlciwgbnVtYmVyXV19IFtwYWdlUmF0aW9dIC0gVGhlIHJhdGlvIG9mIHRoZSBwYWdlcy4gKGluIGhvcml6b250YWwgZGlyZWN0aW9uKVxuICpcbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgTGF5b3V0T3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE9wdGlvbnMge1xuICAgIHNob3dUaXRsZT86IGJvb2xlYW47XG4gICAgYm94ZWQ/OiBib29sZWFuO1xuICAgIGJveENvbG9yPzogRm9yZWdyb3VuZENvbG9yIHwgXCJcIjsgLy8gYWRkIGNvbG9yIGxpc3QgZnJvbSBjaGFsa1xuICAgIGJveFN0eWxlPzogXCJib2xkXCI7XG4gICAgY2hhbmdlRm9jdXNLZXk6IHN0cmluZztcbiAgICB0eXBlOiBcInNpbmdsZVwiIHwgXCJkb3VibGVcIiB8IFwidHJpcGxlXCIgfCBcInF1YWRcIjtcbiAgICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIjtcbiAgICBwYWdlVGl0bGVzPzogc3RyaW5nW107XG4gICAgcGFnZVJhdGlvPzogW251bWJlciwgbnVtYmVyXSB8IFtbbnVtYmVyLCBudW1iZXJdXTtcbn1cblxuLyoqXG4gKiBAY2xhc3MgTGF5b3V0TWFuYWdlclxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYSBsYXlvdXQgdGhhdCBoYXMgdHdvIHBhZ2VzLlxuICogQHBhcmFtIHtQYWdlQnVpbGRlcltdfSBwYWdlcyBUaGUgcGFnZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMgTGF5b3V0IG9wdGlvbnMuXG4gKiBAZXhhbXBsZSBjb25zdCBsYXlvdXQgPSBuZXcgTGF5b3V0TWFuYWdlcihbcGFnZTEsIHBhZ2UyXSwgcGFnZU9wdGlvbnMpO1xuICovXG5leHBvcnQgY2xhc3MgTGF5b3V0TWFuYWdlciB7XG4gICAgcHJpdmF0ZSBDTSE6IENvbnNvbGVNYW5hZ2VyXG4gICAgcHJpdmF0ZSBvcHRpb25zITogTGF5b3V0T3B0aW9uc1xuICAgIHByaXZhdGUgb3B0aW9uc1JlbGF0aXZlITogU2luZ2xlTGF5b3V0T3B0aW9ucyB8IERvdWJsZUxheW91dE9wdGlvbnMgfCBRdWFkTGF5b3V0T3B0aW9uc1xuICAgIHB1YmxpYyBwYWdlczogeyBba2V5OiBudW1iZXJdOiBQYWdlQnVpbGRlciB9ID0ge31cbiAgICBwcml2YXRlIHBhZ2VUaXRsZXM6IHN0cmluZ1tdID0gW11cbiAgICBwdWJsaWMgbGF5b3V0ITogU2luZ2xlTGF5b3V0IHwgRG91YmxlTGF5b3V0IHwgUXVhZExheW91dFxuICAgIHByaXZhdGUgaW5zdGFuY2UhOiBMYXlvdXRNYW5hZ2VyXG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFnZXM6IFBhZ2VCdWlsZGVyW10sIG9wdGlvbnM6IExheW91dE9wdGlvbnMpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluc3RhbmNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gdGhpc1xuICAgICAgICAgICAgLyoqIEBjb25zdCB7Q29uc29sZU1hbmFnZXJ9IENNIHRoZSBpbnN0YW5jZSBvZiBDb25zb2xlTWFuYWdlciAoc2luZ2xldG9uKSAqL1xuICAgICAgICAgICAgdGhpcy5DTSA9IG5ldyBDb25zb2xlTWFuYWdlcigpXG5cblxuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgICAgICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzW2luZGV4XSA9IHBhZ2VcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIC8qKiBAY29uc3Qge3N0cmluZ30gcGFnZVRpdGxlIFRoZSBhcHBsaWNhdGlvbiB0aXRsZS4gKi9cbiAgICAgICAgICAgIHRoaXMucGFnZVRpdGxlcyA9IHRoaXMub3B0aW9ucy5wYWdlVGl0bGVzIHx8IFt0aGlzLkNNLmFwcGxpY2F0aW9uVGl0bGVdXG5cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzaW5nbGVcIjpcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNSZWxhdGl2ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RpdGxlOiB0aGlzLm9wdGlvbnMuc2hvd1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBib3hlZDogdGhpcy5vcHRpb25zLmJveGVkLFxuICAgICAgICAgICAgICAgICAgICBib3hDb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLFxuICAgICAgICAgICAgICAgICAgICBib3hTdHlsZTogdGhpcy5vcHRpb25zLmJveFN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IHRoaXMucGFnZVRpdGxlcyA/IHRoaXMucGFnZVRpdGxlc1swXSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgfSBhcyBTaW5nbGVMYXlvdXRPcHRpb25zXG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQgPSBuZXcgU2luZ2xlTGF5b3V0KHRoaXMucGFnZXNbMF0sIHRoaXMub3B0aW9uc1JlbGF0aXZlKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwiZG91YmxlXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zUmVsYXRpdmUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dUaXRsZTogdGhpcy5vcHRpb25zLnNob3dUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYm94ZWQ6IHRoaXMub3B0aW9ucy5ib3hlZCxcbiAgICAgICAgICAgICAgICAgICAgYm94Q29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgYm94U3R5bGU6IHRoaXMub3B0aW9ucy5ib3hTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgY2hhbmdlRm9jdXNLZXk6IHRoaXMub3B0aW9ucy5jaGFuZ2VGb2N1c0tleSxcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiB0aGlzLm9wdGlvbnMuZGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBwYWdlMVRpdGxlOiB0aGlzLnBhZ2VUaXRsZXMgPyB0aGlzLnBhZ2VUaXRsZXNbMF0gOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBwYWdlMlRpdGxlOiB0aGlzLnBhZ2VUaXRsZXMgPyB0aGlzLnBhZ2VUaXRsZXNbMV0gOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICBwYWdlUmF0aW86IHRoaXMub3B0aW9ucy5wYWdlUmF0aW8sXG4gICAgICAgICAgICAgICAgfSBhcyBEb3VibGVMYXlvdXRPcHRpb25zXG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQgPSBuZXcgRG91YmxlTGF5b3V0KHRoaXMucGFnZXNbMF0sIHRoaXMucGFnZXNbMV0sIHRoaXMub3B0aW9uc1JlbGF0aXZlIGFzIERvdWJsZUxheW91dE9wdGlvbnMpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIGNhc2UgXCJ0cmlwbGVcIjpcblxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwicXVhZFwiOlxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1JlbGF0aXZlID0ge1xuICAgICAgICAgICAgICAgICAgICBzaG93VGl0bGU6IHRoaXMub3B0aW9ucy5zaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJveGVkOiB0aGlzLm9wdGlvbnMuYm94ZWQsXG4gICAgICAgICAgICAgICAgICAgIGJveENvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGJveFN0eWxlOiB0aGlzLm9wdGlvbnMuYm94U3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZUZvY3VzS2V5OiB0aGlzLm9wdGlvbnMuY2hhbmdlRm9jdXNLZXksXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5vcHRpb25zLmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTFUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzBdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTJUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzFdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTNUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzJdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTRUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzNdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJhdGlvOiB0aGlzLm9wdGlvbnMucGFnZVJhdGlvLFxuICAgICAgICAgICAgICAgIH0gYXMgUXVhZExheW91dE9wdGlvbnNcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dCA9IG5ldyBRdWFkTGF5b3V0KHRoaXMucGFnZXNbMF0sIHRoaXMucGFnZXNbMV0sIHRoaXMucGFnZXNbMl0sIHRoaXMucGFnZXNbM10sIHRoaXMub3B0aW9uc1JlbGF0aXZlIGFzIFF1YWRMYXlvdXRPcHRpb25zKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIGlmIHRoZSBsYXlvdXQgaXMgYSBzaW5nbGUgbGF5b3V0IGJ5IGNoZWNraW5nIHRoZSB0eXBlIG9mIHRoZSBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0ge3Vua25vd259IHggLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIGxheW91dC5cbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBJZiB0aGUgbGF5b3V0IGlzIGEgc2luZ2xlIGxheW91dC5cbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqIEBleGFtcGxlIGNvbnN0IGlzU2luZ2xlTGF5b3V0ID0gdGhpcy5pc1NpbmdsZUxheW91dChsYXlvdXQpXG4gICAgICovXG4gICAgcHJpdmF0ZSBpc1NpbmdsZUxheW91dCA9ICh4OiB1bmtub3duKTogeCBpcyBTaW5nbGVMYXlvdXQgPT4ge1xuICAgICAgICByZXR1cm4geCBpbnN0YW5jZW9mIFNpbmdsZUxheW91dFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBsYXlvdXQgcGFnZXMuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcltdfSBwYWdlcyBUaGUgcGFnZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQudXBkYXRlUGFnZXMoW3BhZ2UxLCBwYWdlMl0pXG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnVwZGF0ZVBhZ2VzKFtwYWdlMSwgcGFnZTIsIHBhZ2UzXSlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZXMocGFnZXM6IFBhZ2VCdWlsZGVyW10pOiB2b2lkIHtcbiAgICAgICAgcGFnZXMuZm9yRWFjaCgocGFnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGFnZXNbaW5kZXhdID0gcGFnZVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZShwYWdlKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlKHBhZ2UsIGluZGV4KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSB0aGUgcGFnZSB0byBiZSBhZGRlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCB0aGUgaW5kZXggb2YgdGhlIHBhZ2VcbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlKHBhZ2U6IFBhZ2VCdWlsZGVyLCBpbmRleDogbnVtYmVyKTogdm9pZCB7IFxuICAgICAgICB0aGlzLnBhZ2VzW2luZGV4XSA9IHBhZ2VcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlKHBhZ2UpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRQYWdlKHBhZ2UsIGluZGV4KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB1cGRhdGUgdGhlIHBhZ2UgdGl0bGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIFRoZSB0aXRsZSBvZiB0aGUgcGFnZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggVGhlIGluZGV4IG9mIHRoZSBwYWdlLlxuICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFRpdGxlKFwiUGFnZSBUaXRsZVwiLCAxKVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogdm9pZCB7IFxuICAgICAgICB0aGlzLnBhZ2VUaXRsZXNbaW5kZXhdID0gdGl0bGVcbiAgICAgICAgaWYgKHRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRUaXRsZSh0aXRsZSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFRpdGxlKHRpdGxlLCBpbmRleClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBwYWdlIHRpdGxlcy5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB0aXRsZXMgVGhlIHRpdGxlcyBvZiB0aGUgcGFnZXMuXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuc2V0VGl0bGVzKFtcIlBhZ2UgVGl0bGUgMVwiLCBcIlBhZ2UgVGl0bGUgMlwiXSlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VGl0bGVzKHRpdGxlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVzID0gdGl0bGVzXG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0VGl0bGUodGl0bGVzWzBdKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0VGl0bGVzKHRpdGxlcylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGxheW91dCBib3JkZXIuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBib3JkZXIgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJvcmRlclxuICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICovXG4gICAgcHVibGljIHNldEJvcmRlcihib3JkZXI6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5vcHRpb25zLmJveGVkID0gYm9yZGVyIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY2hvb3NlIHRoZSBwYWdlIHRvIGJlIGhpZ2hsaWdodGVkLlxuICAgICAqIEBwYXJhbSB7MCB8IDEgfCAyIHwgM30gc2VsZWN0ZWQgMCBmb3IgcGFnZTEsIDEgZm9yIHBhZ2UyXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQ6IDAgfCAxIHwgMiB8IDMpOiB2b2lkIHsgXG4gICAgICAgIGlmICghdGhpcy5pc1NpbmdsZUxheW91dCh0aGlzLmxheW91dCkpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFNlbGVjdGVkKHNlbGVjdGVkIGFzIDAgfCAxKSBcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCB0aGUgc2VsZWN0ZWQgcGFnZS5cbiAgICAgICogQHJldHVybnMgezAgfCAxIHwgMiB8IDN9IDAgZm9yIHBhZ2UxLCAxIGZvciBwYWdlMiwgMiBmb3IgcGFnZTMsIDMgZm9yIHBhZ2U0XG4gICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICAqL1xuICAgIHB1YmxpYyBnZXRTZWxlY3RlZCgpOiBudW1iZXIge1xuICAgICAgICBpZiAoIXRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQuc2VsZWN0ZWRcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMFxuICAgIH1cblxuICAgIC8qKlxuICAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBzd2l0Y2ggdGhlIHNlbGVjdGVkIHBhZ2UuIElmIHRoZSBsYXlvdXQgaXMgYSBzaW5nbGUgbGF5b3V0LCBpdCB3aWxsIGRvIG5vdGhpbmcuXG4gICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAgKi9cbiAgICBwdWJsaWMgY2hhbmdlTGF5b3V0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5jaGFuZ2VMYXlvdXQoKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZWNyZWFzZSB0aGUgcm93IHJhdGlvIGJldHdlZW4gdGhlIHBhZ2VzIGluIHRoZSBzZWxlY3RlZCByb3cuIFRoaXMgaXMgcHJvcGFnYXRlZCB0byB0aGUgbGF5b3V0IGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB7cXVhbnRpdHl9IHF1YW50aXR5IFRoZSBhbW91bnQgb2YgYXNwZWN0IHJhdGlvIHRvIGJlIGRlY3JlYXNlZC5cbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqIEBleGFtcGxlIGxheW91dC5kZWNyZWFzZVJvd1JhdGlvKDAuMDEpXG4gICAgICovXG4gICAgcHVibGljIGRlY3JlYXNlUmF0aW8ocXVhbnRpdHk6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5kZWNyZWFzZVJhdGlvKHF1YW50aXR5KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBpbmNyZWFzZSB0aGUgcm93IHJhdGlvIGJldHdlZW4gdGhlIHBhZ2VzIGluIHRoZSBzZWxlY3RlZCByb3cuIFRoaXMgaXMgcHJvcGFnYXRlZCB0byB0aGUgbGF5b3V0IGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB7cXVhbnRpdHl9IHF1YW50aXR5IFRoZSBhbW91bnQgb2YgYXNwZWN0IHJhdGlvIHRvIGJlIGluY3JlYXNlZC5cbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqIEBleGFtcGxlIGxheW91dC5pbmNyZWFzZVJvd1JhdGlvKDAuMDEpXG4gICAgICovXG4gICAgcHVibGljIGluY3JlYXNlUmF0aW8ocXVhbnRpdHk6IG51bWJlcikge1xuICAgICAgICBpZiAoIXRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5pbmNyZWFzZVJhdGlvKHF1YW50aXR5KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IHRoZSBsYXlvdXQgdG8gdGhlIHNjcmVlbi5cbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBleGFtcGxlIGxheW91dC5kcmF3KClcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJhdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXlvdXQuZHJhdygpXG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXlvdXRNYW5hZ2VyIl19 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF5b3V0TWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2xheW91dC9MYXlvdXRNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVwRCxPQUFPLFlBQXFDLE1BQU0sbUJBQW1CLENBQUE7QUFDckUsT0FBTyxVQUFpQyxNQUFNLGlCQUFpQixDQUFBO0FBQy9ELE9BQU8sWUFBcUMsTUFBTSxtQkFBbUIsQ0FBQTtBQThCckU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGFBQWE7SUFTdEIsWUFBbUIsS0FBb0IsRUFBRSxPQUFzQjtRQUx4RCxVQUFLLEdBQW1DLEVBQUUsQ0FBQTtRQUN6QyxlQUFVLEdBQWEsRUFBRSxDQUFBO1FBdUVqQzs7Ozs7O1dBTUc7UUFDSyxtQkFBYyxHQUFHLENBQUMsQ0FBVSxFQUFxQixFQUFFO1lBQ3ZELE9BQU8sQ0FBQyxZQUFZLFlBQVksQ0FBQTtRQUNwQyxDQUFDLENBQUE7UUEzRUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO1NBQ3ZCO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQTtZQUNwQiw0RUFBNEU7WUFDNUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1lBRzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQzVCLENBQUMsQ0FBQyxDQUFBO1lBRUYsdURBQXVEO1lBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFV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QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBaUIsQ0FBQyxDQUFBO1NBQzdDO0lBQ0wsQ0FBQztJQUVEOzs7O1FBSUk7SUFDRyxXQUFXO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUE7U0FDOUI7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNaLENBQUM7SUFFRDs7OztRQUlJO0lBQ0csWUFBWTtRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFBO1NBQzdCO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFFBQWdCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUN0QztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGFBQWEsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDdEM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJO1FBQ1AsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFFRCxlQUFlLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcmVncm91bmRDb2xvciB9IGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgeyBDb25zb2xlTWFuYWdlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCBQYWdlQnVpbGRlciBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuaW1wb3J0IERvdWJsZUxheW91dCwgeyBEb3VibGVMYXlvdXRPcHRpb25zIH0gZnJvbSBcIi4vRG91YmxlTGF5b3V0LmpzXCJcbmltcG9ydCBRdWFkTGF5b3V0LCB7IFF1YWRMYXlvdXRPcHRpb25zIH0gZnJvbSBcIi4vUXVhZExheW91dC5qc1wiXG5pbXBvcnQgU2luZ2xlTGF5b3V0LCB7IFNpbmdsZUxheW91dE9wdGlvbnMgfSBmcm9tIFwiLi9TaW5nbGVMYXlvdXQuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIGxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IExheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age1wic2luZ2xlXCIgfCBcImRvdWJsZVwiIHwgXCJ0cmlwbGVcIiB8IFwicXVhZFwifSBbdHlwZV0gLSBUaGUgdHlwZSBvZiB0aGUgbGF5b3V0LlxuICogQHByb3Age3N0cmluZ30gW2NoYW5nZUZvY3VzS2V5XSAtIFRoZSBrZXkgdGhhdCBzaG91bGQgYmUgcHJlc3NlZCB0byBjaGFuZ2UgdGhlIGZvY3VzLlxuICogQHByb3Age1wiaG9yaXpvbnRhbFwiIHwgXCJ2ZXJ0aWNhbFwifSBbZGlyZWN0aW9uXSAtIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGxheW91dC5cbiAqIEBwcm9wIHtzdHJpbmdbXX0gW3BhZ2VUaXRsZXNdIC0gVGhlIHRpdGxlIG9mIHRoZSBmaXJzdCBwYWdlLlxuICogQHByb3Age1tudW1iZXIsIG51bWJlcl0gfCBbW251bWJlciwgbnVtYmVyXV19IFtwYWdlUmF0aW9dIC0gVGhlIHJhdGlvIG9mIHRoZSBwYWdlcy4gKGluIGhvcml6b250YWwgZGlyZWN0aW9uKVxuICpcbiAqIEBleHBvcnRcbiAqIEBpbnRlcmZhY2UgTGF5b3V0T3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE9wdGlvbnMge1xuICAgIHNob3dUaXRsZT86IGJvb2xlYW47XG4gICAgYm94ZWQ/OiBib29sZWFuO1xuICAgIGJveENvbG9yPzogRm9yZWdyb3VuZENvbG9yIHwgXCJcIjsgLy8gYWRkIGNvbG9yIGxpc3QgZnJvbSBjaGFsa1xuICAgIGJveFN0eWxlPzogXCJib2xkXCI7XG4gICAgY2hhbmdlRm9jdXNLZXk6IHN0cmluZztcbiAgICB0eXBlOiBcInNpbmdsZVwiIHwgXCJkb3VibGVcIiB8IFwidHJpcGxlXCIgfCBcInF1YWRcIjtcbiAgICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwidmVydGljYWxcIjtcbiAgICBwYWdlVGl0bGVzPzogc3RyaW5nW107XG4gICAgcGFnZVJhdGlvPzogW251bWJlciwgbnVtYmVyXSB8IFtbbnVtYmVyLCBudW1iZXJdXTtcbn1cblxuLyoqXG4gKiBAY2xhc3MgTGF5b3V0TWFuYWdlclxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYSBsYXlvdXQgdGhhdCBoYXMgdHdvIHBhZ2VzLlxuICogXG4gKiAhW2NoYW5nZSByYXRpb10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vMTQ5MDc5ODcvMTcwOTk5MzQ3LTg2OGVhYzdiLTZiZGYtNDE0Ny1iY2IwLWI3NDY1MjgyZWQ1Zi5naWYpXG4gKiBcbiAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJbXX0gcGFnZXMgVGhlIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIHNob3duLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zIExheW91dCBvcHRpb25zLlxuICogQGV4YW1wbGUgY29uc3QgbGF5b3V0ID0gbmV3IExheW91dE1hbmFnZXIoW3BhZ2UxLCBwYWdlMl0sIHBhZ2VPcHRpb25zKTtcbiAqL1xuZXhwb3J0IGNsYXNzIExheW91dE1hbmFnZXIge1xuICAgIHByaXZhdGUgQ00hOiBDb25zb2xlTWFuYWdlclxuICAgIHByaXZhdGUgb3B0aW9ucyE6IExheW91dE9wdGlvbnNcbiAgICBwcml2YXRlIG9wdGlvbnNSZWxhdGl2ZSE6IFNpbmdsZUxheW91dE9wdGlvbnMgfCBEb3VibGVMYXlvdXRPcHRpb25zIHwgUXVhZExheW91dE9wdGlvbnNcbiAgICBwdWJsaWMgcGFnZXM6IHsgW2tleTogbnVtYmVyXTogUGFnZUJ1aWxkZXIgfSA9IHt9XG4gICAgcHJpdmF0ZSBwYWdlVGl0bGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgcHVibGljIGxheW91dCE6IFNpbmdsZUxheW91dCB8IERvdWJsZUxheW91dCB8IFF1YWRMYXlvdXRcbiAgICBwcml2YXRlIGluc3RhbmNlITogTGF5b3V0TWFuYWdlclxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhZ2VzOiBQYWdlQnVpbGRlcltdLCBvcHRpb25zOiBMYXlvdXRPcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHRoaXNcbiAgICAgICAgICAgIC8qKiBAY29uc3Qge0NvbnNvbGVNYW5hZ2VyfSBDTSB0aGUgaW5zdGFuY2Ugb2YgQ29uc29sZU1hbmFnZXIgKHNpbmdsZXRvbikgKi9cbiAgICAgICAgICAgIHRoaXMuQ00gPSBuZXcgQ29uc29sZU1hbmFnZXIoKVxuXG5cbiAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnNcbiAgICAgICAgICAgIHBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYWdlc1tpbmRleF0gPSBwYWdlXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvKiogQGNvbnN0IHtzdHJpbmd9IHBhZ2VUaXRsZSBUaGUgYXBwbGljYXRpb24gdGl0bGUuICovXG4gICAgICAgICAgICB0aGlzLnBhZ2VUaXRsZXMgPSB0aGlzLm9wdGlvbnMucGFnZVRpdGxlcyB8fCBbdGhpcy5DTS5hcHBsaWNhdGlvblRpdGxlXVxuXG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic2luZ2xlXCI6XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zUmVsYXRpdmUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHNob3dUaXRsZTogdGhpcy5vcHRpb25zLnNob3dUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgYm94ZWQ6IHRoaXMub3B0aW9ucy5ib3hlZCxcbiAgICAgICAgICAgICAgICAgICAgYm94Q29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgYm94U3R5bGU6IHRoaXMub3B0aW9ucy5ib3hTdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiB0aGlzLnBhZ2VUaXRsZXMgPyB0aGlzLnBhZ2VUaXRsZXNbMF0gOiBcIlwiLFxuICAgICAgICAgICAgICAgIH0gYXMgU2luZ2xlTGF5b3V0T3B0aW9uc1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0ID0gbmV3IFNpbmdsZUxheW91dCh0aGlzLnBhZ2VzWzBdLCB0aGlzLm9wdGlvbnNSZWxhdGl2ZSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcImRvdWJsZVwiOlxuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1JlbGF0aXZlID0ge1xuICAgICAgICAgICAgICAgICAgICBzaG93VGl0bGU6IHRoaXMub3B0aW9ucy5zaG93VGl0bGUsXG4gICAgICAgICAgICAgICAgICAgIGJveGVkOiB0aGlzLm9wdGlvbnMuYm94ZWQsXG4gICAgICAgICAgICAgICAgICAgIGJveENvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsXG4gICAgICAgICAgICAgICAgICAgIGJveFN0eWxlOiB0aGlzLm9wdGlvbnMuYm94U3R5bGUsXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZUZvY3VzS2V5OiB0aGlzLm9wdGlvbnMuY2hhbmdlRm9jdXNLZXksXG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogdGhpcy5vcHRpb25zLmRpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTFUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzBdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZTJUaXRsZTogdGhpcy5wYWdlVGl0bGVzID8gdGhpcy5wYWdlVGl0bGVzWzFdIDogXCJcIixcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJhdGlvOiB0aGlzLm9wdGlvbnMucGFnZVJhdGlvLFxuICAgICAgICAgICAgICAgIH0gYXMgRG91YmxlTGF5b3V0T3B0aW9uc1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0ID0gbmV3IERvdWJsZUxheW91dCh0aGlzLnBhZ2VzWzBdLCB0aGlzLnBhZ2VzWzFdLCB0aGlzLm9wdGlvbnNSZWxhdGl2ZSBhcyBEb3VibGVMYXlvdXRPcHRpb25zKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICBjYXNlIFwidHJpcGxlXCI6XG5cbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgY2FzZSBcInF1YWRcIjpcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNSZWxhdGl2ZSA9IHtcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RpdGxlOiB0aGlzLm9wdGlvbnMuc2hvd1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICBib3hlZDogdGhpcy5vcHRpb25zLmJveGVkLFxuICAgICAgICAgICAgICAgICAgICBib3hDb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLFxuICAgICAgICAgICAgICAgICAgICBib3hTdHlsZTogdGhpcy5vcHRpb25zLmJveFN0eWxlLFxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VGb2N1c0tleTogdGhpcy5vcHRpb25zLmNoYW5nZUZvY3VzS2V5LFxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgIHBhZ2UxVGl0bGU6IHRoaXMucGFnZVRpdGxlcyA/IHRoaXMucGFnZVRpdGxlc1swXSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2UyVGl0bGU6IHRoaXMucGFnZVRpdGxlcyA/IHRoaXMucGFnZVRpdGxlc1sxXSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2UzVGl0bGU6IHRoaXMucGFnZVRpdGxlcyA/IHRoaXMucGFnZVRpdGxlc1syXSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U0VGl0bGU6IHRoaXMucGFnZVRpdGxlcyA/IHRoaXMucGFnZVRpdGxlc1szXSA6IFwiXCIsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSYXRpbzogdGhpcy5vcHRpb25zLnBhZ2VSYXRpbyxcbiAgICAgICAgICAgICAgICB9IGFzIFF1YWRMYXlvdXRPcHRpb25zXG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQgPSBuZXcgUXVhZExheW91dCh0aGlzLnBhZ2VzWzBdLCB0aGlzLnBhZ2VzWzFdLCB0aGlzLnBhZ2VzWzJdLCB0aGlzLnBhZ2VzWzNdLCB0aGlzLm9wdGlvbnNSZWxhdGl2ZSBhcyBRdWFkTGF5b3V0T3B0aW9ucylcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayBpZiB0aGUgbGF5b3V0IGlzIGEgc2luZ2xlIGxheW91dCBieSBjaGVja2luZyB0aGUgdHlwZSBvZiB0aGUgaW5zdGFuY2UuXG4gICAgICogQHBhcmFtIHt1bmtub3dufSB4IC0gVGhlIGluc3RhbmNlIG9mIHRoZSBsYXlvdXQuXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IC0gSWYgdGhlIGxheW91dCBpcyBhIHNpbmdsZSBsYXlvdXQuXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBjb25zdCBpc1NpbmdsZUxheW91dCA9IHRoaXMuaXNTaW5nbGVMYXlvdXQobGF5b3V0KVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNTaW5nbGVMYXlvdXQgPSAoeDogdW5rbm93bik6IHggaXMgU2luZ2xlTGF5b3V0ID0+IHtcbiAgICAgICAgcmV0dXJuIHggaW5zdGFuY2VvZiBTaW5nbGVMYXlvdXRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgbGF5b3V0IHBhZ2VzLlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJbXX0gcGFnZXMgVGhlIHBhZ2VzIHRoYXQgc2hvdWxkIGJlIHNob3duLlxuICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnVwZGF0ZVBhZ2VzKFtwYWdlMSwgcGFnZTJdKVxuICAgICAqIEBleGFtcGxlIGxheW91dC51cGRhdGVQYWdlcyhbcGFnZTEsIHBhZ2UyLCBwYWdlM10pXG4gICAgICovXG4gICAgcHVibGljIHNldFBhZ2VzKHBhZ2VzOiBQYWdlQnVpbGRlcltdKTogdm9pZCB7XG4gICAgICAgIHBhZ2VzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBhZ2VzW2luZGV4XSA9IHBhZ2VcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFBhZ2UocGFnZSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZShwYWdlLCBpbmRleClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUgcGFnZSBjb250ZW50LlxuICAgICAqIEBwYXJhbSB7UGFnZUJ1aWxkZXJ9IHBhZ2UgdGhlIHBhZ2UgdG8gYmUgYWRkZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXggdGhlIGluZGV4IG9mIHRoZSBwYWdlXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZShwYWdlOiBQYWdlQnVpbGRlciwgaW5kZXg6IG51bWJlcik6IHZvaWQgeyBcbiAgICAgICAgdGhpcy5wYWdlc1tpbmRleF0gPSBwYWdlXG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZShwYWdlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0UGFnZShwYWdlLCBpbmRleClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBwYWdlIHRpdGxlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSBUaGUgdGl0bGUgb2YgdGhlIHBhZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IFRoZSBpbmRleCBvZiB0aGUgcGFnZS5cbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqIEBleGFtcGxlIGxheW91dC5zZXRUaXRsZShcIlBhZ2UgVGl0bGVcIiwgMSlcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQgeyBcbiAgICAgICAgdGhpcy5wYWdlVGl0bGVzW2luZGV4XSA9IHRpdGxlXG4gICAgICAgIGlmICh0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuc2V0VGl0bGUodGl0bGUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRUaXRsZSh0aXRsZSwgaW5kZXgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgcGFnZSB0aXRsZXMuXG4gICAgICogQHBhcmFtIHtzdHJpbmdbXX0gdGl0bGVzIFRoZSB0aXRsZXMgb2YgdGhlIHBhZ2VzLlxuICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFRpdGxlcyhbXCJQYWdlIFRpdGxlIDFcIiwgXCJQYWdlIFRpdGxlIDJcIl0pXG4gICAgICovXG4gICAgcHVibGljIHNldFRpdGxlcyh0aXRsZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlcyA9IHRpdGxlc1xuICAgICAgICBpZiAodGhpcy5pc1NpbmdsZUxheW91dCh0aGlzLmxheW91dCkpIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFRpdGxlKHRpdGxlc1swXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGF5b3V0LnNldFRpdGxlcyh0aXRsZXMpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBsYXlvdXQgYm9yZGVyLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9yZGVyIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBib3JkZXJcbiAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRCb3JkZXIoYm9yZGVyOiBib29sZWFuKTogdm9pZCB7IHRoaXMub3B0aW9ucy5ib3hlZCA9IGJvcmRlciB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNob29zZSB0aGUgcGFnZSB0byBiZSBoaWdobGlnaHRlZC5cbiAgICAgKiBAcGFyYW0gezAgfCAxIHwgMiB8IDN9IHNlbGVjdGVkIDAgZm9yIHBhZ2UxLCAxIGZvciBwYWdlMlxuICAgICAqIEBtZW1iZXJvZiBMYXlvdXRNYW5hZ2VyXG4gICAgICovXG4gICAgcHVibGljIHNldFNlbGVjdGVkKHNlbGVjdGVkOiAwIHwgMSB8IDIgfCAzKTogdm9pZCB7IFxuICAgICAgICBpZiAoIXRoaXMuaXNTaW5nbGVMYXlvdXQodGhpcy5sYXlvdXQpKSB7XG4gICAgICAgICAgICB0aGlzLmxheW91dC5zZXRTZWxlY3RlZChzZWxlY3RlZCBhcyAwIHwgMSkgXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgdGhlIHNlbGVjdGVkIHBhZ2UuXG4gICAgICAqIEByZXR1cm5zIHswIHwgMSB8IDIgfCAzfSAwIGZvciBwYWdlMSwgMSBmb3IgcGFnZTIsIDIgZm9yIHBhZ2UzLCAzIGZvciBwYWdlNFxuICAgICAgKiBAbWVtYmVyb2YgTGF5b3V0TWFuYWdlclxuICAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWQoKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGF5b3V0LnNlbGVjdGVkXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDBcbiAgICB9XG5cbiAgICAvKipcbiAgICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgc3dpdGNoIHRoZSBzZWxlY3RlZCBwYWdlLiBJZiB0aGUgbGF5b3V0IGlzIGEgc2luZ2xlIGxheW91dCwgaXQgd2lsbCBkbyBub3RoaW5nLlxuICAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgICovXG4gICAgcHVibGljIGNoYW5nZUxheW91dCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuY2hhbmdlTGF5b3V0KClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGVjcmVhc2UgdGhlIHJvdyByYXRpbyBiZXR3ZWVuIHRoZSBwYWdlcyBpbiB0aGUgc2VsZWN0ZWQgcm93LiBUaGlzIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGxheW91dCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0ge3F1YW50aXR5fSBxdWFudGl0eSBUaGUgYW1vdW50IG9mIGFzcGVjdCByYXRpbyB0byBiZSBkZWNyZWFzZWQuXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZGVjcmVhc2VSb3dSYXRpbygwLjAxKVxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNyZWFzZVJhdGlvKHF1YW50aXR5OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuZGVjcmVhc2VSYXRpbyhxdWFudGl0eSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaW5jcmVhc2UgdGhlIHJvdyByYXRpbyBiZXR3ZWVuIHRoZSBwYWdlcyBpbiB0aGUgc2VsZWN0ZWQgcm93LiBUaGlzIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGxheW91dCBpbnN0YW5jZS5cbiAgICAgKiBAcGFyYW0ge3F1YW50aXR5fSBxdWFudGl0eSBUaGUgYW1vdW50IG9mIGFzcGVjdCByYXRpbyB0byBiZSBpbmNyZWFzZWQuXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuaW5jcmVhc2VSb3dSYXRpbygwLjAxKVxuICAgICAqL1xuICAgIHB1YmxpYyBpbmNyZWFzZVJhdGlvKHF1YW50aXR5OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2luZ2xlTGF5b3V0KHRoaXMubGF5b3V0KSkge1xuICAgICAgICAgICAgdGhpcy5sYXlvdXQuaW5jcmVhc2VSYXRpbyhxdWFudGl0eSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB0aGUgbGF5b3V0IHRvIHRoZSBzY3JlZW4uXG4gICAgICogQG1lbWJlcm9mIExheW91dE1hbmFnZXJcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZHJhdygpXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGF5b3V0LmRyYXcoKVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGF5b3V0TWFuYWdlciJdfQ== |
@@ -35,2 +35,5 @@ import { ForegroundColor } from "chalk"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![quad layout](https://user-images.githubusercontent.com/14907987/170998201-59880c90-7b1a-491a-8a45-6610e5c33de9.png) | ||
* | ||
* @param {PageBuilder} page1 The first page. | ||
@@ -37,0 +40,0 @@ * @param {PageBuilder} page2 The second page. |
@@ -25,2 +25,5 @@ import { ForegroundColor } from "chalk"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![single layout](https://user-images.githubusercontent.com/14907987/170997567-b1260996-cc7e-4c26-8389-39519313f3f6.png) | ||
* | ||
* @param {PageBuilder} page The first page. | ||
@@ -27,0 +30,0 @@ * @param {boolean} options Layout options. |
@@ -5,2 +5,5 @@ import { ConsoleManager } from "../../ConsoleGui.js"; | ||
* @description This class is a layout that has two pages. | ||
* | ||
* ![single layout](https://user-images.githubusercontent.com/14907987/170997567-b1260996-cc7e-4c26-8389-39519313f3f6.png) | ||
* | ||
* @param {PageBuilder} page The first page. | ||
@@ -114,2 +117,2 @@ * @param {boolean} options Layout options. | ||
export default SingleLayout; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xlTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGF5b3V0L1NpbmdsZUxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0scUJBQXFCLENBQUE7QUF1QmpFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQW1CLElBQWlCLEVBQUUsT0FBNEI7UUFDOUQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUU5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFOUQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQTtJQUN2RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxJQUFpQixJQUFVLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUU1RDs7Ozs7O09BTUc7SUFDSSxRQUFRLENBQUMsS0FBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUUvRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE1BQWUsSUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBRXZFOzs7OztPQUtHO0lBQ0ssUUFBUSxDQUFDLElBQTBCO1FBQ3ZDLE1BQU0sS0FBSyxHQUFH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LEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9yZWdyb3VuZENvbG9yIH0gZnJvbSBcImNoYWxrXCJcbmltcG9ydCB7IENvbnNvbGVNYW5hZ2VyLCBQYWdlQnVpbGRlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IFN0eWxlZEVsZW1lbnQgfSBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIFNpbmdsZUxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNpbmdsZUxheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age3N0cmluZ30gW3BhZ2VUaXRsZV0gLSBUaGUgdGl0bGUgb2YgdGhlIGZpcnN0IHBhZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBTaW5nbGVMYXlvdXRPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2luZ2xlTGF5b3V0T3B0aW9ucyB7XG4gICAgc2hvd1RpdGxlPzogYm9vbGVhbjtcbiAgICBib3hlZD86IGJvb2xlYW47XG4gICAgYm94Q29sb3I/OiBGb3JlZ3JvdW5kQ29sb3IgfCBcIlwiOyAvLyBhZGQgY29sb3IgbGlzdCBmcm9tIGNoYWxrXG4gICAgYm94U3R5bGU/OiBcImJvbGRcIjtcbiAgICBwYWdlVGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGNsYXNzIFNpbmdsZUxheW91dFxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYSBsYXlvdXQgdGhhdCBoYXMgdHdvIHBhZ2VzLlxuICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSBUaGUgZmlyc3QgcGFnZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gb3B0aW9ucyBMYXlvdXQgb3B0aW9ucy5cbiAqIEBleGFtcGxlIGNvbnN0IGxheW91dCA9IG5ldyBTaW5nbGVMYXlvdXQocGFnZTEsIHBhZ2UyLCB0cnVlLCAwKVxuICovXG5leHBvcnQgY2xhc3MgU2luZ2xlTGF5b3V0IHtcbiAgICBDTTogQ29uc29sZU1hbmFnZXJcbiAgICBvcHRpb25zOiBTaW5nbGVMYXlvdXRPcHRpb25zXG4gICAgcGFnZTogUGFnZUJ1aWxkZXJcbiAgICBib3hCb2xkOiBib29sZWFuXG4gICAgcGFnZVRpdGxlOiBzdHJpbmdcbiAgICBpc09kZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHBhZ2U6IFBhZ2VCdWlsZGVyLCBvcHRpb25zOiBTaW5nbGVMYXlvdXRPcHRpb25zKSB7XG4gICAgICAgIC8qKiBAY29uc3Qge0NvbnNvbGVNYW5hZ2VyfSBDTSB0aGUgaW5zdGFuY2Ugb2YgQ29uc29sZU1hbmFnZXIgKHNpbmdsZXRvbikgKi9cbiAgICAgICAgdGhpcy5DTSA9IG5ldyBDb25zb2xlTWFuYWdlcigpXG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9uc1xuICAgICAgICB0aGlzLnBhZ2UgPSBwYWdlXG5cbiAgICAgICAgdGhpcy5ib3hCb2xkID0gdGhpcy5vcHRpb25zLmJveFN0eWxlID09PSBcImJvbGRcIiA/IHRydWUgOiBmYWxzZVxuXG4gICAgICAgIC8qKiBAY29uc3Qge3N0cmluZ30gcGFnZVRpdGxlIFRoZSBhcHBsaWNhdGlvbiB0aXRsZS4gKi9cbiAgICAgICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLm9wdGlvbnMucGFnZVRpdGxlIHx8IHRoaXMuQ00uYXBwbGljYXRpb25UaXRsZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gb3ZlcndyaXRlIHRoZSBwYWdlIGNvbnRlbnQuXG4gICAgICogQHBhcmFtIHtQYWdlQnVpbGRlcn0gcGFnZSB0aGUgcGFnZSB0byBiZSBhZGRlZFxuICAgICAqIEBtZW1iZXJvZiBTaW5nbGVMYXlvdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGFnZShwYWdlOiBQYWdlQnVpbGRlcik6IHZvaWQgeyB0aGlzLnBhZ2UgPSBwYWdlIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSB0aXRsZSBvZiB0aGUgbGF5b3V0LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSB0aGUgdGl0bGUgdG8gYmUgc2V0XG4gICAgICogQG1lbWJlcm9mIFNpbmdsZUxheW91dFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBleGFtcGxlIGxheW91dC5zZXRUaXRsZShcIk15IFRpdGxlXCIpXG4gICAgICovXG4gICAgcHVibGljIHNldFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHsgdGhpcy5wYWdlVGl0bGUgPSB0aXRsZSB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBsYXlvdXQgYm9yZGVyLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYm9yZGVyIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBib3JkZXJcbiAgICAgKiBAbWVtYmVyb2YgU2luZ2xlTGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIHNldEJvcmRlcihib3JkZXI6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5vcHRpb25zLmJveGVkID0gYm9yZGVyIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyBhIHNpbmdsZSBsaW5lIG9mIHRoZSBsYXlvdXQgdG8gdGhlIHNjcmVlbi4gSXQgYWxzbyB0cmltIHRoZSBsaW5lIGlmIGl0IGlzIHRvbyBsb25nLlxuICAgICAqIEBwYXJhbSB7QXJyYXk8U3R5bGVkRWxlbWVudD59IGxpbmUgdGhlIGxpbmUgdG8gYmUgZHJhd25cbiAgICAgKiBAbWVtYmVyb2YgU2luZ2xlTGF5b3V0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICovXG4gICAgcHJpdmF0ZSBkcmF3TGluZShsaW5lOiBBcnJheTxTdHlsZWRFbGVtZW50Pik6IHZvaWQge1xuICAgICAgICBjb25zdCBic2l6ZSA9IHRoaXMub3B0aW9ucy5ib3hlZCA/IDIgOiAwXG4gICAgICAgIGxldCB1bmZvcm1hdHRlZExpbmUgPSBcIlwiXG4gICAgICAgIGxldCBuZXdMaW5lID0gWy4uLmxpbmVdXG5cbiAgICAgICAgbGluZS5mb3JFYWNoKChlbGVtZW50OiB7IHRleHQ6IHN0cmluZzsgfSkgPT4ge1xuICAgICAgICAgICAgdW5mb3JtYXR0ZWRMaW5lICs9IGVsZW1lbnQudGV4dFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmUubGVuZ3RoID4gdGhpcy5DTS5TY3JlZW4ud2lkdGggLSBic2l6ZSkge1xuICAgICAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZS5sZW5ndGggPiB0aGlzLkNNLlNjcmVlbi53aWR0aCAtIGJzaXplKSB7IC8vIE5lZWQgdG8gdHJ1bmNhdGVcbiAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAyXG4gICAgICAgICAgICAgICAgbmV3TGluZSA9IFsuLi5KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGxpbmUpKV0gLy8gU2hhbGxvdyBjb3B5IGJlY2F1c2UgSSBqdXN0IHdhbnQgdG8gbW9kaWZ5IHRoZSB2YWx1ZXMgYnV0IG5vdCB0aGUgb3JpZ2luYWxcblxuICAgICAgICAgICAgICAgIGxldCBkaWZmID0gdW5mb3JtYXR0ZWRMaW5lLmxlbmd0aCAtIHRoaXMuQ00uU2NyZWVuLndpZHRoICsgMVxuXG4gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHRydW5jYXRlZCB0ZXh0XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IG5ld0xpbmUubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0xpbmVbal0udGV4dC5sZW5ndGggPiBkaWZmICsgb2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lW2pdLnRleHQgPSB0aGlzLkNNLnRydW5jYXRlKG5ld0xpbmVbal0udGV4dCwgKG5ld0xpbmVbal0udGV4dC5sZW5ndGggLSBkaWZmKSAtIG9mZnNldCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaWZmIC09IG5ld0xpbmVbal0udGV4dC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmUuc3BsaWNlKGosIDEpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHVuZm9ybWF0dGVkIGxpbmVcbiAgICAgICAgICAgICAgICB1bmZvcm1hdHRlZExpbmUgPSBuZXdMaW5lLm1hcCgoZWxlbWVudDogeyB0ZXh0OiBzdHJpbmc7IH0pID0+IGVsZW1lbnQudGV4dCkuam9pbihcIlwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYm94ZWQpIG5ld0xpbmUudW5zaGlmdCh7IHRleHQ6IFwi4pSCXCIsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgIGlmICh1bmZvcm1hdHRlZExpbmUubGVuZ3RoIDw9IHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gYnNpemUpIHtcbiAgICAgICAgICAgIG5ld0xpbmUucHVzaCh7IHRleHQ6IGAke1wiIFwiLnJlcGVhdCgodGhpcy5DTS5TY3JlZW4ud2lkdGggLSB1bmZvcm1hdHRlZExpbmUubGVuZ3RoKSAtIGJzaXplKX1gLCBzdHlsZTogeyBjb2xvcjogXCJcIiB9IH0pXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgbmV3TGluZS5wdXNoKHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoLi4ubmV3TGluZSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGRyYXcgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLlxuICAgICAqIEBtZW1iZXJvZiBTaW5nbGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKiBAZXhhbXBsZSBsYXlvdXQuZHJhdygpXG4gICAgICovXG4gICAgcHVibGljIGRyYXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPZGQgPSB0aGlzLkNNLlNjcmVlbi53aWR0aCAlIDIgPT09IDFcbiAgICAgICAgY29uc3QgdHJpbW1lZFRpdGxlID0gdGhpcy5DTS50cnVuY2F0ZSh0aGlzLnBhZ2VUaXRsZSwgdGhpcy5DTS5TY3JlZW4ud2lkdGggLSAyLCBmYWxzZSlcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgeyAvLyBEcmF3IHBhZ2VzIHdpdGggYm9yZGVyc1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VGl0bGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilIzilIAke3RyaW1tZWRUaXRsZX0ke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gdHJpbW1lZFRpdGxlLmxlbmd0aCAtIDMpfeKUkGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUjOKUgCR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSAzKX3ilJBgLCBzdHlsZTogeyBjb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYWdlLmdldENvbnRlbnQoKS5mb3JFYWNoKChsaW5lOiBTdHlsZWRFbGVtZW50W10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdMaW5lKGxpbmUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSUJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDIpfeKUmGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgIH0gZWxzZSB7IC8vIERyYXcgcGFnZXMgd2l0aG91dCBib3JkZXJzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYCR7dHJpbW1lZFRpdGxlfWAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhZ2UuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNpbmdsZUxheW91dCJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZ2xlTGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbGF5b3V0L1NpbmdsZUxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFlLE1BQU0scUJBQXFCLENBQUE7QUF1QmpFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBUXJCLFlBQW1CLElBQWlCLEVBQUUsT0FBNEI7UUFDOUQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQTtRQUU5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUVoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFFOUQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQTtJQUN2RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE9BQU8sQ0FBQyxJQUFpQixJQUFVLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUU1RDs7Ozs7O09BTUc7SUFDSSxRQUFRLENBQUMsS0FBYSxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUUvRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFDLE1BQWUsSUFBVSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBRXZFOzs7OztPQUtHO0lBQ0ssUUFBUSxDQUFDLElBQTBCO1FBQ3ZDLE1BQU0sS0FBSyxH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QUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFxQixFQUFFLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdkIsQ0FBQyxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7Q0FDSjtBQUVELGVBQWUsWUFBWSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9yZWdyb3VuZENvbG9yIH0gZnJvbSBcImNoYWxrXCJcbmltcG9ydCB7IENvbnNvbGVNYW5hZ2VyLCBQYWdlQnVpbGRlciB9IGZyb20gXCIuLi8uLi9Db25zb2xlR3VpLmpzXCJcbmltcG9ydCB7IFN0eWxlZEVsZW1lbnQgfSBmcm9tIFwiLi4vUGFnZUJ1aWxkZXIuanNcIlxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUaGUgdHlwZSBjb250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgb3B0aW9ucyBmb3IgdGhlIFNpbmdsZUxheW91dC5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNpbmdsZUxheW91dE9wdGlvbnNcbiAqIEBwcm9wIHtib29sZWFufSBbc2hvd1RpdGxlXSAtIElmIHRoZSB0aXRsZSBzaG91bGQgYmUgc2hvd24uXG4gKiBAcHJvcCB7Ym9vbGVhbn0gW2JveGVkXSAtIElmIHRoZSBsYXlvdXQgc2hvdWxkIGJlIGJveGVkLlxuICogQHByb3Age0ZvcmVncm91bmRDb2xvciB8IFwiXCJ9IFtib3hDb2xvcl0gLSBUaGUgY29sb3Igb2YgdGhlIGJveCB0YWtlbiBmcm9tIHRoZSBjaGFsayBsaWJyYXJ5LlxuICogQHByb3Age1wiYm9sZFwifSBbYm94U3R5bGVdIC0gSWYgdGhlIGJvcmRlciBvZiB0aGUgYm94IHNob3VsZCBiZSBib2xkLlxuICogQHByb3Age3N0cmluZ30gW3BhZ2VUaXRsZV0gLSBUaGUgdGl0bGUgb2YgdGhlIGZpcnN0IHBhZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQGludGVyZmFjZSBTaW5nbGVMYXlvdXRPcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2luZ2xlTGF5b3V0T3B0aW9ucyB7XG4gICAgc2hvd1RpdGxlPzogYm9vbGVhbjtcbiAgICBib3hlZD86IGJvb2xlYW47XG4gICAgYm94Q29sb3I/OiBGb3JlZ3JvdW5kQ29sb3IgfCBcIlwiOyAvLyBhZGQgY29sb3IgbGlzdCBmcm9tIGNoYWxrXG4gICAgYm94U3R5bGU/OiBcImJvbGRcIjtcbiAgICBwYWdlVGl0bGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGNsYXNzIFNpbmdsZUxheW91dFxuICogQGRlc2NyaXB0aW9uIFRoaXMgY2xhc3MgaXMgYSBsYXlvdXQgdGhhdCBoYXMgdHdvIHBhZ2VzLlxuICogXG4gKiAhW3NpbmdsZSBsYXlvdXRdKGh0dHBzOi8vdXNlci1pbWFnZXMuZ2l0aHVidXNlcmNvbnRlbnQuY29tLzE0OTA3OTg3LzE3MDk5NzU2Ny1iMTI2MDk5Ni1jYzdlLTRjMjYtODM4OS0zOTUxOTMxM2YzZjYucG5nKVxuICogXG4gKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlIFRoZSBmaXJzdCBwYWdlLlxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zIExheW91dCBvcHRpb25zLlxuICogQGV4YW1wbGUgY29uc3QgbGF5b3V0ID0gbmV3IFNpbmdsZUxheW91dChwYWdlMSwgcGFnZTIsIHRydWUsIDApXG4gKi9cbmV4cG9ydCBjbGFzcyBTaW5nbGVMYXlvdXQge1xuICAgIENNOiBDb25zb2xlTWFuYWdlclxuICAgIG9wdGlvbnM6IFNpbmdsZUxheW91dE9wdGlvbnNcbiAgICBwYWdlOiBQYWdlQnVpbGRlclxuICAgIGJveEJvbGQ6IGJvb2xlYW5cbiAgICBwYWdlVGl0bGU6IHN0cmluZ1xuICAgIGlzT2RkOiBib29sZWFuIHwgdW5kZWZpbmVkXG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGFnZTogUGFnZUJ1aWxkZXIsIG9wdGlvbnM6IFNpbmdsZUxheW91dE9wdGlvbnMpIHtcbiAgICAgICAgLyoqIEBjb25zdCB7Q29uc29sZU1hbmFnZXJ9IENNIHRoZSBpbnN0YW5jZSBvZiBDb25zb2xlTWFuYWdlciAoc2luZ2xldG9uKSAqL1xuICAgICAgICB0aGlzLkNNID0gbmV3IENvbnNvbGVNYW5hZ2VyKClcblxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zXG4gICAgICAgIHRoaXMucGFnZSA9IHBhZ2VcblxuICAgICAgICB0aGlzLmJveEJvbGQgPSB0aGlzLm9wdGlvbnMuYm94U3R5bGUgPT09IFwiYm9sZFwiID8gdHJ1ZSA6IGZhbHNlXG5cbiAgICAgICAgLyoqIEBjb25zdCB7c3RyaW5nfSBwYWdlVGl0bGUgVGhlIGFwcGxpY2F0aW9uIHRpdGxlLiAqL1xuICAgICAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMub3B0aW9ucy5wYWdlVGl0bGUgfHwgdGhpcy5DTS5hcHBsaWNhdGlvblRpdGxlXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBvdmVyd3JpdGUgdGhlIHBhZ2UgY29udGVudC5cbiAgICAgKiBAcGFyYW0ge1BhZ2VCdWlsZGVyfSBwYWdlIHRoZSBwYWdlIHRvIGJlIGFkZGVkXG4gICAgICogQG1lbWJlcm9mIFNpbmdsZUxheW91dFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQYWdlKHBhZ2U6IFBhZ2VCdWlsZGVyKTogdm9pZCB7IHRoaXMucGFnZSA9IHBhZ2UgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIHRpdGxlIG9mIHRoZSBsYXlvdXQuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlIHRoZSB0aXRsZSB0byBiZSBzZXRcbiAgICAgKiBAbWVtYmVyb2YgU2luZ2xlTGF5b3V0XG4gICAgICogQHJldHVybnMge3ZvaWR9XG4gICAgICogQGV4YW1wbGUgbGF5b3V0LnNldFRpdGxlKFwiTXkgVGl0bGVcIilcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0VGl0bGUodGl0bGU6IHN0cmluZyk6IHZvaWQgeyB0aGlzLnBhZ2VUaXRsZSA9IHRpdGxlIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGxheW91dCBib3JkZXIuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBib3JkZXIgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJvcmRlclxuICAgICAqIEBtZW1iZXJvZiBTaW5nbGVMYXlvdXRcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Qm9yZGVyKGJvcmRlcjogYm9vbGVhbik6IHZvaWQgeyB0aGlzLm9wdGlvbnMuYm94ZWQgPSBib3JkZXIgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkcmF3IGEgc2luZ2xlIGxpbmUgb2YgdGhlIGxheW91dCB0byB0aGUgc2NyZWVuLiBJdCBhbHNvIHRyaW0gdGhlIGxpbmUgaWYgaXQgaXMgdG9vIGxvbmcuXG4gICAgICogQHBhcmFtIHtBcnJheTxTdHlsZWRFbGVtZW50Pn0gbGluZSB0aGUgbGluZSB0byBiZSBkcmF3blxuICAgICAqIEBtZW1iZXJvZiBTaW5nbGVMYXlvdXRcbiAgICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGRyYXdMaW5lKGxpbmU6IEFycmF5PFN0eWxlZEVsZW1lbnQ+KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJzaXplID0gdGhpcy5vcHRpb25zLmJveGVkID8gMiA6IDBcbiAgICAgICAgbGV0IHVuZm9ybWF0dGVkTGluZSA9IFwiXCJcbiAgICAgICAgbGV0IG5ld0xpbmUgPSBbLi4ubGluZV1cblxuICAgICAgICBsaW5lLmZvckVhY2goKGVsZW1lbnQ6IHsgdGV4dDogc3RyaW5nOyB9KSA9PiB7XG4gICAgICAgICAgICB1bmZvcm1hdHRlZExpbmUgKz0gZWxlbWVudC50ZXh0XG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZS5sZW5ndGggPiB0aGlzLkNNLlNjcmVlbi53aWR0aCAtIGJzaXplKSB7XG4gICAgICAgICAgICBpZiAodW5mb3JtYXR0ZWRMaW5lLmxlbmd0aCA+IHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gYnNpemUpIHsgLy8gTmVlZCB0byB0cnVuY2F0ZVxuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IDJcbiAgICAgICAgICAgICAgICBuZXdMaW5lID0gWy4uLkpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGluZSkpXSAvLyBTaGFsbG93IGNvcHkgYmVjYXVzZSBJIGp1c3Qgd2FudCB0byBtb2RpZnkgdGhlIHZhbHVlcyBidXQgbm90IHRoZSBvcmlnaW5hbFxuXG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSB1bmZvcm1hdHRlZExpbmUubGVuZ3RoIC0gdGhpcy5DTS5TY3JlZW4ud2lkdGggKyAxXG5cbiAgICAgICAgICAgICAgICAvLyByZW1vdmUgdHJ1bmNhdGVkIHRleHRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gbmV3TGluZS5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3TGluZVtqXS50ZXh0Lmxlbmd0aCA+IGRpZmYgKyBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVbal0udGV4dCA9IHRoaXMuQ00udHJ1bmNhdGUobmV3TGluZVtqXS50ZXh0LCAobmV3TGluZVtqXS50ZXh0Lmxlbmd0aCAtIGRpZmYpIC0gb2Zmc2V0LCB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgLT0gbmV3TGluZVtqXS50ZXh0Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZS5zcGxpY2UoaiwgMSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdW5mb3JtYXR0ZWQgbGluZVxuICAgICAgICAgICAgICAgIHVuZm9ybWF0dGVkTGluZSA9IG5ld0xpbmUubWFwKChlbGVtZW50OiB7IHRleHQ6IHN0cmluZzsgfSkgPT4gZWxlbWVudC50ZXh0KS5qb2luKFwiXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ib3hlZCkgbmV3TGluZS51bnNoaWZ0KHsgdGV4dDogXCLilIJcIiwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgaWYgKHVuZm9ybWF0dGVkTGluZS5sZW5ndGggPD0gdGhpcy5DTS5TY3JlZW4ud2lkdGggLSBic2l6ZSkge1xuICAgICAgICAgICAgbmV3TGluZS5wdXNoKHsgdGV4dDogYCR7XCIgXCIucmVwZWF0KCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIHVuZm9ybWF0dGVkTGluZS5sZW5ndGgpIC0gYnNpemUpfWAsIHN0eWxlOiB7IGNvbG9yOiBcIlwiIH0gfSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSBuZXdMaW5lLnB1c2goeyB0ZXh0OiBcIuKUglwiLCBzdHlsZTogeyBjb2xvcjogdGhpcy5vcHRpb25zLmJveENvbG9yLCBib2xkOiB0aGlzLmJveEJvbGQgfSB9KVxuICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSguLi5uZXdMaW5lKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZHJhdyB0aGUgbGF5b3V0IHRvIHRoZSBzY3JlZW4uXG4gICAgICogQG1lbWJlcm9mIFNpbmdsZUxheW91dFxuICAgICAqIEByZXR1cm5zIHt2b2lkfVxuICAgICAqIEBleGFtcGxlIGxheW91dC5kcmF3KClcbiAgICAgKi9cbiAgICBwdWJsaWMgZHJhdygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09kZCA9IHRoaXMuQ00uU2NyZWVuLndpZHRoICUgMiA9PT0gMVxuICAgICAgICBjb25zdCB0cmltbWVkVGl0bGUgPSB0aGlzLkNNLnRydW5jYXRlKHRoaXMucGFnZVRpdGxlLCB0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDIsIGZhbHNlKVxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJveGVkKSB7IC8vIERyYXcgcGFnZXMgd2l0aCBib3JkZXJzXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUaXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuQ00uU2NyZWVuLndyaXRlKHsgdGV4dDogYOKUjOKUgCR7dHJpbW1lZFRpdGxlfSR7XCLilIBcIi5yZXBlYXQodGhpcy5DTS5TY3JlZW4ud2lkdGggLSB0cmltbWVkVGl0bGUubGVuZ3RoIC0gMyl94pSQYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBg4pSM4pSAJHtcIuKUgFwiLnJlcGVhdCh0aGlzLkNNLlNjcmVlbi53aWR0aCAtIDMpfeKUkGAsIHN0eWxlOiB7IGNvbG9yOiB0aGlzLm9wdGlvbnMuYm94Q29sb3IsIGJvbGQ6IHRoaXMuYm94Qm9sZCB9IH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhZ2UuZ2V0Q29udGVudCgpLmZvckVhY2goKGxpbmU6IFN0eWxlZEVsZW1lbnRbXSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0xpbmUobGluZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLkNNLlNjcmVlbi53cml0ZSh7IHRleHQ6IGDilJQke1wi4pSAXCIucmVwZWF0KHRoaXMuQ00uU2NyZWVuLndpZHRoIC0gMil94pSYYCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgfSBlbHNlIHsgLy8gRHJhdyBwYWdlcyB3aXRob3V0IGJvcmRlcnNcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1RpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5DTS5TY3JlZW4ud3JpdGUoeyB0ZXh0OiBgJHt0cmltbWVkVGl0bGV9YCwgc3R5bGU6IHsgY29sb3I6IHRoaXMub3B0aW9ucy5ib3hDb2xvciwgYm9sZDogdGhpcy5ib3hCb2xkIH0gfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFnZS5nZXRDb250ZW50KCkuZm9yRWFjaCgobGluZTogU3R5bGVkRWxlbWVudFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TGluZShsaW5lKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgU2luZ2xlTGF5b3V0Il19 |
/// <reference types="node" /> | ||
/// <reference types="node" /> | ||
import { EventEmitter } from "events"; | ||
@@ -3,0 +4,0 @@ import { StyledElement, StyleObject } from "./PageBuilder.js"; |
/// <reference types="node" /> | ||
/// <reference types="node" /> | ||
import { EventEmitter } from "events"; | ||
@@ -3,0 +4,0 @@ import PageBuilder from "./components/PageBuilder.js"; |
{ | ||
"name": "console-gui-tools", | ||
"version": "1.1.31", | ||
"version": "1.1.32", | ||
"description": "A simple library to draw option menu, text popup or other widgets and layout on a Node.js console.", | ||
@@ -50,19 +50,19 @@ "main": "dist/ConsoleGui.js", | ||
"dependencies": { | ||
"chalk": "^5.0.1" | ||
"chalk": "^5.1.2" | ||
}, | ||
"devDependencies": { | ||
"@babel/cli": "^7.17.10", | ||
"@babel/core": "^7.18.0", | ||
"@babel/plugin-proposal-class-properties": "^7.17.12", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.18.0", | ||
"@babel/preset-env": "^7.18.0", | ||
"@babel/preset-typescript": "^7.17.12", | ||
"@types/node": "^17.0.35", | ||
"@typescript-eslint/eslint-plugin": "^5.25.0", | ||
"@typescript-eslint/parser": "^5.25.0", | ||
"eslint": "^8.15.0", | ||
"@babel/cli": "^7.19.3", | ||
"@babel/core": "^7.20.2", | ||
"@babel/plugin-proposal-class-properties": "^7.18.6", | ||
"@babel/plugin-proposal-object-rest-spread": "^7.20.2", | ||
"@babel/preset-env": "^7.20.2", | ||
"@babel/preset-typescript": "^7.18.6", | ||
"@types/node": "^18.11.9", | ||
"@typescript-eslint/eslint-plugin": "^5.42.1", | ||
"@typescript-eslint/parser": "^5.42.1", | ||
"eslint": "^8.27.0", | ||
"jsdoc-babel": "^0.5.0", | ||
"jsdoc-to-markdown": "^7.1.1", | ||
"typescript": "^4.6.4" | ||
"typescript": "^4.8.4" | ||
} | ||
} |
# console-gui-tools | ||
[![npm version](https://badge.fury.io/js/console-gui-tools.svg)](https://npmjs.com/package/console-gui-tools) [![npm](https://img.shields.io/npm/dt/console-gui-tools)](https://npmjs.com/package/console-gui-tools) ![GitHub](https://img.shields.io/github/license/elius94/console-gui-tools) | ||
A simple Node.js library to create Console Apps like a wizard (or maybe if you like old style colored screen or something like "teletext" programs 😂) | ||
A simple ([PURE ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c)) Node.js library to create Console Apps like a wizard (or maybe if you like old style colored screen or something like "teletext" programs 😂) | ||
Apart from jokes, it is a library that allows you to create a screen divided into a part with everything you want to see (such as variable values) and another in which the logs run. | ||
@@ -275,3 +275,3 @@ Moreover in this way the application is managed by the input event "keypressed" to which each key corresponds to a bindable command. | ||
| -------------- | -------------- | ------------ | | ||
| ![image](https://user-images.githubusercontent.com/14907987/170997567-b1260996-cc7e-4c26-8389-39519313f3f6.png) | ![image](https://user-images.githubusercontent.com/14907987/170996957-cb28414b-7be2-4aa0-938b-f6d1724cfa4c.png) | ![image](https://user-images.githubusercontent.com/14907987/170998201-59880c90-7b1a-491a-8a45-6610e5c33de9.png) | | ||
| ![single layout](https://user-images.githubusercontent.com/14907987/170997567-b1260996-cc7e-4c26-8389-39519313f3f6.png) | ![double layout](https://user-images.githubusercontent.com/14907987/170996957-cb28414b-7be2-4aa0-938b-f6d1724cfa4c.png) | ![quad layout](https://user-images.githubusercontent.com/14907987/170998201-59880c90-7b1a-491a-8a45-6610e5c33de9.png) | | ||
@@ -278,0 +278,0 @@ </details> |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
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
603582
4861
Updatedchalk@^5.1.2