@magic-xpa/utils 4.801.0-dev481.290 → 4.801.0-dev481.298
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/src/Base64.mjs +1 -1
- package/esm2020/src/DateTimeUtils.mjs +1 -1
- package/esm2020/src/DateUtil.mjs +1 -1
- package/esm2020/src/Misc.mjs +2 -2
- package/esm2020/src/StrUtil.mjs +1 -2
- package/esm2020/src/SyncExecutionHelper.mjs +1 -1
- package/esm2020/src/UtilStrByteMode.mjs +1 -1
- package/esm2020/src/Xml/XmlParser.mjs +1 -1
- package/fesm2015/magic-xpa-utils.mjs +1 -2
- package/fesm2015/magic-xpa-utils.mjs.map +1 -1
- package/fesm2020/magic-xpa-utils.mjs +1 -2
- package/fesm2020/magic-xpa-utils.mjs.map +1 -1
- package/package.json +2 -2
package/esm2020/src/Base64.mjs
CHANGED
|
@@ -162,4 +162,4 @@ export class Base64 {
|
|
|
162
162
|
}
|
|
163
163
|
Base64._base64EncMap = Base64.initializeEncMap();
|
|
164
164
|
Base64._base64DecMap = Base64.initializeDecMap();
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL0Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXNCLG9CQUFvQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDcEcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sT0FBTyxNQUFNO0lBUWpCLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBYyxFQUFFLHlCQUErQixFQUFFLFFBQW1CO1FBQ2hGLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUMsQ0FBQzthQUUxRCxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUM3QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLHlCQUF5QixFQUFFLFFBQVEsQ0FBQyxDQUFDOztZQUd2RSxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQVNPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLFFBQWtCO1FBQ3JELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFVTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxlQUF3QixFQUFFLFFBQWtCO1FBQy9FLElBQUksTUFBYyxDQUFDO1FBQ25CLElBQUksR0FBRyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ2Y7YUFDSTtZQUNILElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTtnQkFDZCxNQUFNLEdBQUcsR0FBRyxDQUFDO2FBQ2Q7aUJBQ0k7Z0JBQ0gsSUFBSTtvQkFDRixJQUFJLFFBQVEsR0FBYSxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7b0JBQ3hELElBQUksU0FBUyxHQUFhLGVBQWUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7b0JBQ2hFLElBQUksRUFBRSxHQUFlLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUM1RCxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDL0M7Z0JBQ0QsT0FBTyxFQUFFLEVBQUU7b0JBQ1QsTUFBTSxJQUFJLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDNUM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU9PLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBZ0I7UUFFdEMsSUFBSSxJQUFJLEtBQUssSUFBSTtZQUNmLE9BQU8sSUFBSSxDQUFDO1FBRWQsSUFBSSxJQUFJLEdBQWUsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUdyQixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckgsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQVMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDeEgsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNqQjtRQUVELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUM5RSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQVMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDckgsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBUyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUN2RTtpQkFDSTtnQkFDSCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDbkU7U0FDRjtRQUdELE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNqQjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBYyxFQUFFLFFBQW1CO1FBQy9DLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxJQUFJLFNBQVMsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDO1lBQ3BGLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUUvQixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUM3QixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDOztZQUc1QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQU9PLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVztRQUNqQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFRTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQVcsRUFBRSxRQUFrQjtRQUVyRCxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxHQUFHLElBQUksQ0FBQztTQUNmO2FBQ0k7WUFDSCxJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7Z0JBQ2QsTUFBTSxHQUFHLEdBQUcsQ0FBQzthQUNkO2lCQUNJO2dCQUNILElBQUk7b0JBQ0YsSUFBSSxRQUFRLEdBQXdCLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztvQkFDbkUsSUFBSSxLQUFLLEdBQWUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlELElBQUksU0FBUyxHQUFhLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztvQkFDcEUsTUFBTSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3REO2dCQUNELE9BQU8sRUFBRSxFQUFFO29CQUNULE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzVDO2FBQ0Y7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFPTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQWdCO1FBQ3RDLElBQUksSUFBSSxLQUFLLElBQUk7WUFDZixPQUFPLElBQUksQ0FBQztRQUVkLElBQUksSUFBSSxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7U0FDakI7UUFDRCxJQUFJLElBQUksR0FBZSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFHMUUsS0FBSyxJQUFJLEdBQUcsR0FBVyxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDN0M7UUFHRCxJQUFJLElBQUksR0FBVyxDQUFDLENBQUM7UUFDckIsSUFBSSxJQUFZLENBQUM7UUFDakIsS0FBSyxJQUFJLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRTtZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUYsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFD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RSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7WUFDM0YsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0I7UUFDN0IsSUFBSSxNQUFNLEdBQWUsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0MsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2xFLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUFwUGMsb0JBQWEsR0FBZSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztBQUN0RCxvQkFBYSxHQUFlLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFbmNvZGluZywgRXhjZXB0aW9uLCBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgSVNPXzg4NTlfMV9FbmNvZGluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RyVXRpbH0gZnJvbSBcIi4vU3RyVXRpbFwiO1xyXG5pbXBvcnQge01pc2N9IGZyb20gXCIuL01pc2NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlNjR7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NEVuY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRW5jTWFwKCk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NERlY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRGVjTWFwKCk7XHJcblxyXG5cclxuICBzdGF0aWMgZW5jb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShzdHI6IHN0cmluZywgaXNVc2VFbnZDaGFyc2V0OiBib29sZWFuLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZW5jb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZ09ySXNVc2VFbnZDaGFyc2V0PzogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmVuY29kZV8wKHN0ck9yRGF0YSwgZW5jb2RpbmdPcklzVXNlRW52Q2hhcnNldCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMylcclxuICAgICAgcmV0dXJuIEJhc2U2NC5lbmNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nT3JJc1VzZUVudkNoYXJzZXQsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZW5jb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuIEl0J3MgdXNlZCBmb3IgZXhhbXBsZSBpbiB0aGVcclxuICAvLy8gXCJCYXNpY1wiIGF1dGhvcml6YXRpb24gc2NoZW1lLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuY29kaW5nXCI+IEVudmlyb25tZW50LkVuY29kaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgc3RyIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVfMChzdHI6IHN0cmluZywgZW5jb2Rpbmc6IEVuY29kaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKHN0ciwgZmFsc2UsIGVuY29kaW5nKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRW5jb2RlcyBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZy5cclxuICAvLy8gSWYgaXNVc2VFbnZDaGFyc2V0IGlzIHRydWUsIHVzZSB0aGUgc3BlY2lmaWMgY2hhcnNldCB3aGVuIGNvbnZlcnRpbmdcclxuICAvLy8gc3RyaW5nIHRvIGJ5dGUgYXJyYXkuIChEQkNTIHN1cHBvcnQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNVc2VFbnZDaGFyc2V0XCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj4gRW52aXJvbm1lbnQuRW5jb2RpbmcgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBiYXNlNjQtZW5jb2RlZCBzdHIgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZV8xKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ6IGJvb2xlYW4sIGVuY29kaW5nOiBFbmNvZGluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0ciA9PT0gXCJcIikge1xyXG4gICAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IGluc3RhbmNlOiBFbmNvZGluZyA9IElTT184ODU5XzFfRW5jb2RpbmcuSVNPXzg4NTlfMTtcclxuICAgICAgICAgIGxldCBlbmNvZGluZzI6IEVuY29kaW5nID0gaXNVc2VFbnZDaGFyc2V0ID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIGxldCBiYTogVWludDhBcnJheSA9IEJhc2U2NC5lbmNvZGUoZW5jb2RpbmcyLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UuR2V0U3RyaW5nKGJhLCAwLCBiYS5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRoaXMgbWV0aG9kIGVuY29kZXMgdGhlIGdpdmVuIGJ5dGVbXSB1c2luZyB0aGUgYmFzZTY0LWVuY29kaW5nXHJcbiAgLy8vIHNwZWNpZmllZCBpbiBSRkMtMjA0NSAoU2VjdGlvbiA2LjgpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF0YVwiPnRoZSBkYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgZGF0YSA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlXzIoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xyXG5cclxuICAgIGlmIChkYXRhID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKGRhdGEubGVuZ3RoICsgMikgLyAzKSAqIDQpO1xyXG4gICAgbGV0IHNpZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgZGlkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLyAzLWJ5dGUgdG8gNC1ieXRlIGNvbnZlcnNpb24gKyAwLTYzIHRvIEFTQ0lJIHByaW50YWJsZSBjb252ZXJzaW9uXHJcbiAgICB3aGlsZSAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMikge1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFtNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHhdLCAyKSAmIDYzXTtcclxuICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbKE1pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeCArIDFdLCA0KSAmIDE1KSB8ICg8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzKV07XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAyXSwgNikgJiAzKSB8ICg8bnVtYmVyPmRhdGFbc2lkeCArIDFdIDw8IDIgJiA2MyldO1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPihkYXRhW3NpZHggKyAyXSAmIDYzKV07XHJcbiAgICAgIHNpZHggPSBzaWR4ICsgMztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwW01pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeF0sIDIpICYgNjNdO1xyXG4gICAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAxXSwgNCkgJiAxNSkgfCAoPG51bWJlcj5kYXRhW3NpZHhdIDw8IDQgJiA2MyldO1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWzxudW1iZXI+ZGF0YVtzaWR4ICsgMV0gPDwgMiAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBwYWRkaW5nXHJcbiAgICB3aGlsZSAoZGlkeCA8IGRlc3QubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeF0gPSA2MTtcclxuICAgICAgZGlkeCA9IGRpZHggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRlY29kZShzdHI6IHN0cmluZyk6IHN0cmluZztcclxuICBzdGF0aWMgZGVjb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGRlY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZGVjb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChzdHJPckRhdGEgPT09IG51bGwgfHwgc3RyT3JEYXRhLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmRlY29kZV8wKHN0ck9yRGF0YSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMilcclxuICAgICAgcmV0dXJuIEJhc2U2NC5kZWNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgYmFzZTY0LWVuY29kZWQgc3RyaW5nLiA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGRlY29kZWQgc3RyLjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQmFzZTY0LmRlY29kZShzdHIsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj5FbnZpcm9ubWVudC5FbmNvZGluZyBvciBudWxsLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgZGVjb2RlZCBzdHIuPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZV8xKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIgPT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoc3RyID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgaW5zdGFuY2U6IElTT184ODU5XzFfRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgICAgICBsZXQgYXJyYXk6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgbGV0IGVuY29kaW5nMjogRW5jb2RpbmcgPSAoZW5jb2RpbmcgIT09IG51bGwpID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIHJlc3VsdCA9IGVuY29kaW5nMi5HZXRTdHJpbmcoYXJyYXksIDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKGV4Lk1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gYnl0ZVtdIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRhXCI+dGhlIGJhc2U2NC1lbmNvZGVkIGRhdGEuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBkZWNvZGVkIDx2YXI+ZGF0YTwvdmFcclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMihkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoZGF0YSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IHRhaWw6IG51bWJlciA9IGRhdGEubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGRhdGFbdGFpbCAtIDFdID09PSAnPScuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICB0YWlsID0gdGFpbCAtIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRhaWwgLSBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gNCkpO1xyXG5cclxuICAgIC8vIEFTQ0lJIHByaW50YWJsZSB0byAwLTYzIGNvbnZlcnNpb25cclxuICAgIGZvciAobGV0IGlkeDogbnVtYmVyID0gMDsgaWR4IDwgZGF0YS5sZW5ndGg7IGlkeCA9IGlkeCArIDEpIHtcclxuICAgICAgZGF0YVtpZHhdID0gQmFzZTY0Ll9iYXNlNjREZWNNYXBbZGF0YVtpZHhdXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA0LWJ5dGUgdG8gMy1ieXRlIGNvbnZlcnNpb25cclxuICAgIGxldCBzaWR4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGRpZHg6IG51bWJlcjtcclxuICAgIGZvciAoZGlkeCA9IDA7IGRpZHggPCBkZXN0Lmxlbmd0aCAtIDI7IGRpZHggPSBkaWR4ICsgMykge1xyXG4gICAgICBkZXN0W2RpZHhdID0gKCgoZGF0YVtzaWR4XSA8PCAyKSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDFdLCA0KSAmIDMpKTtcclxuICAgICAgZGVzdFtkaWR4ICsgMV0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcbiAgICAgIGRlc3RbZGlkeCArIDJdID0gKCgoZGF0YVtzaWR4ICsgMl0gPDwgNikgJiAyNTUpIHwgKGRhdGFbc2lkeCArIDNdICYgNjMpKTtcclxuICAgICAgc2lkeCA9IHNpZHggKyA0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkaWR4IDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHhdIDw8IDIpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMV0sIDQpICYgMykpO1xyXG4gICAgaWYgKChkaWR4ID0gZGlkeCArIDEpIDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcblxyXG4gICAgcmV0dXJuIGRlc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZWQgYW5kIHJldHVybiBhbiBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGE8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGRlY29kZVRvSGV4KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzdHIgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHN0ciA9PT0gXCJcIilcclxuICAgICAgcmV0dXJuIHN0cjtcclxuXHJcbiAgICByZXR1cm4gU3RyVXRpbC5zdHJpbmdUb0hleGFEdW1wKEJhc2U2NC5kZWNvZGUoc3RyKSwgMik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZXMgYSBzdHJpbmcgdG8gYnl0ZSBhcnJheTwvc3VtbWFyeT5cclxuICBzdGF0aWMgZGVjb2RlVG9CeXRlKHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyBRQ1IgNzQwOTE4IGlmIHdlIGhhdmUgYW5kIGVtcHR5IGV4cHJlc3Npb24gaXQgaXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgYXMgZW1wdHkgc3RyaW5nXHJcbiAgICAvLyBhbmQgY2hhbmdlZCBsb2NhbGx5IHRvIGEgc3RyaW5nIHdpdGggb25lIGJsYW5rIGVpdGhlciB3YXkgdGhleSBhcmUgbm90IHZhbGlkIGJhc2U2NCBlbmNvZGVkXHJcbiAgICAvLyBzdHJpbmcgYW5kIHNob3VsZCBub3QgYmUgZGVjb2RlZC5cclxuICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09PSBcIiBcIilcclxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBpbnN0YW5jZTogRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVFbmNNYXAoKSB7XHJcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW1xyXG4gICAgICA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MyxcclxuICAgICAgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSxcclxuICAgICAgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCxcclxuICAgICAgNTUsIDU2LCA1NywgNDMsIDQ3XHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplRGVjTWFwKCkge1xyXG4gICAgbGV0IGRlY01hcDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KDEyOCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IEJhc2U2NC5fYmFzZTY0RW5jTWFwLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGRlY01hcFtCYXNlNjQuX2Jhc2U2NEVuY01hcFtpXV0gPSBpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWNNYXA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL0Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLE1BQU07SUFRakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFjLEVBQUUseUJBQStCLEVBQUUsUUFBbUI7UUFDaEYsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDeEIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO2FBRTFELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzdCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLEVBQUUsUUFBUSxDQUFDLENBQUM7O1lBR3ZFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBU08sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsUUFBa0I7UUFDckQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQVVPLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBVyxFQUFFLGVBQXdCLEVBQUUsUUFBa0I7UUFDL0UsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjthQUNJO1lBQ0gsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO2dCQUNkLE1BQU0sR0FB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QjtRQUNELElBQUksSUFBSSxHQUFlLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUcxRSxLQUFLLElBQUksR0FBRyxHQUFXLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUdELElBQUksSUFBSSxHQUFXLENBQUMsQ0FBQztRQUNyQixJQUFJLElBQVksQ0FBQztRQUNqQixLQUFLLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRixJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMs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LEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUMzRixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtTQUNuQixDQUFDLENBQUM7SUFFTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGdCQUFnQjtRQUM3QixJQUFJLE1BQU0sR0FBZSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQXBQYyxvQkFBYSxHQUFlLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0FBQ3RELG9CQUFhLEdBQWUsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0VuY29kaW5nLCBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgSVNPXzg4NTlfMV9FbmNvZGluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RyVXRpbH0gZnJvbSBcIi4vU3RyVXRpbFwiO1xyXG5pbXBvcnQge01pc2N9IGZyb20gXCIuL01pc2NcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBCYXNlNjR7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NEVuY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRW5jTWFwKCk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2Jhc2U2NERlY01hcDogVWludDhBcnJheSA9IEJhc2U2NC5pbml0aWFsaXplRGVjTWFwKCk7XHJcblxyXG5cclxuICBzdGF0aWMgZW5jb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShzdHI6IHN0cmluZywgaXNVc2VFbnZDaGFyc2V0OiBib29sZWFuLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGVuY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZW5jb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZ09ySXNVc2VFbnZDaGFyc2V0PzogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmVuY29kZV8wKHN0ck9yRGF0YSwgZW5jb2RpbmdPcklzVXNlRW52Q2hhcnNldCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMylcclxuICAgICAgcmV0dXJuIEJhc2U2NC5lbmNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nT3JJc1VzZUVudkNoYXJzZXQsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZW5jb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZW5jb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuIEl0J3MgdXNlZCBmb3IgZXhhbXBsZSBpbiB0aGVcclxuICAvLy8gXCJCYXNpY1wiIGF1dGhvcml6YXRpb24gc2NoZW1lLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuY29kaW5nXCI+IEVudmlyb25tZW50LkVuY29kaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgc3RyIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBlbmNvZGVfMChzdHI6IHN0cmluZywgZW5jb2Rpbmc6IEVuY29kaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBCYXNlNjQuZW5jb2RlKHN0ciwgZmFsc2UsIGVuY29kaW5nKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRW5jb2RlcyBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZy5cclxuICAvLy8gSWYgaXNVc2VFbnZDaGFyc2V0IGlzIHRydWUsIHVzZSB0aGUgc3BlY2lmaWMgY2hhcnNldCB3aGVuIGNvbnZlcnRpbmdcclxuICAvLy8gc3RyaW5nIHRvIGJ5dGUgYXJyYXkuIChEQkNTIHN1cHBvcnQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNVc2VFbnZDaGFyc2V0XCI+IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj4gRW52aXJvbm1lbnQuRW5jb2RpbmcgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBiYXNlNjQtZW5jb2RlZCBzdHIgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGVuY29kZV8xKHN0cjogc3RyaW5nLCBpc1VzZUVudkNoYXJzZXQ6IGJvb2xlYW4sIGVuY29kaW5nOiBFbmNvZGluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0ciA9PT0gXCJcIikge1xyXG4gICAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgbGV0IGluc3RhbmNlOiBFbmNvZGluZyA9IElTT184ODU5XzFfRW5jb2RpbmcuSVNPXzg4NTlfMTtcclxuICAgICAgICAgIGxldCBlbmNvZGluZzI6IEVuY29kaW5nID0gaXNVc2VFbnZDaGFyc2V0ID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIGxldCBiYTogVWludDhBcnJheSA9IEJhc2U2NC5lbmNvZGUoZW5jb2RpbmcyLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UuR2V0U3RyaW5nKGJhLCAwLCBiYS5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFRoaXMgbWV0aG9kIGVuY29kZXMgdGhlIGdpdmVuIGJ5dGVbXSB1c2luZyB0aGUgYmFzZTY0LWVuY29kaW5nXHJcbiAgLy8vIHNwZWNpZmllZCBpbiBSRkMtMjA0NSAoU2VjdGlvbiA2LjgpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGF0YVwiPnRoZSBkYXRhIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgYmFzZTY0LWVuY29kZWQgZGF0YSA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgZW5jb2RlXzIoZGF0YTogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkge1xyXG5cclxuICAgIGlmIChkYXRhID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKGRhdGEubGVuZ3RoICsgMikgLyAzKSAqIDQpO1xyXG4gICAgbGV0IHNpZHg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgZGlkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvLyAzLWJ5dGUgdG8gNC1ieXRlIGNvbnZlcnNpb24gKyAwLTYzIHRvIEFTQ0lJIHByaW50YWJsZSBjb252ZXJzaW9uXHJcbiAgICB3aGlsZSAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMikge1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFtNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHhdLCAyKSAmIDYzXTtcclxuICAgICAgZGVzdFtkaWR4KytdID0gQmFzZTY0Ll9iYXNlNjRFbmNNYXBbKE1pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeCArIDFdLCA0KSAmIDE1KSB8ICg8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzKV07XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAyXSwgNikgJiAzKSB8ICg8bnVtYmVyPmRhdGFbc2lkeCArIDFdIDw8IDIgJiA2MyldO1xyXG4gICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPihkYXRhW3NpZHggKyAyXSAmIDYzKV07XHJcbiAgICAgIHNpZHggPSBzaWR4ICsgMztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwW01pc2MuVVJTaGlmdCg8bnVtYmVyPmRhdGFbc2lkeF0sIDIpICYgNjNdO1xyXG4gICAgICBpZiAoc2lkeCA8IGRhdGEubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWyhNaXNjLlVSU2hpZnQoPG51bWJlcj5kYXRhW3NpZHggKyAxXSwgNCkgJiAxNSkgfCAoPG51bWJlcj5kYXRhW3NpZHhdIDw8IDQgJiA2MyldO1xyXG4gICAgICAgIGRlc3RbZGlkeCsrXSA9IEJhc2U2NC5fYmFzZTY0RW5jTWFwWzxudW1iZXI+ZGF0YVtzaWR4ICsgMV0gPDwgMiAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBkZXN0W2RpZHgrK10gPSBCYXNlNjQuX2Jhc2U2NEVuY01hcFs8bnVtYmVyPmRhdGFbc2lkeF0gPDwgNCAmIDYzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCBwYWRkaW5nXHJcbiAgICB3aGlsZSAoZGlkeCA8IGRlc3QubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGlkeF0gPSA2MTtcclxuICAgICAgZGlkeCA9IGRpZHggKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZXN0O1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGRlY29kZShzdHI6IHN0cmluZyk6IHN0cmluZztcclxuICBzdGF0aWMgZGVjb2RlKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIGRlY29kZShkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheTtcclxuICBzdGF0aWMgZGVjb2RlKHN0ck9yRGF0YTogYW55LCBlbmNvZGluZz86IEVuY29kaW5nKTogYW55IHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChzdHJPckRhdGEgPT09IG51bGwgfHwgc3RyT3JEYXRhLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKVxyXG4gICAgICByZXR1cm4gQmFzZTY0LmRlY29kZV8wKHN0ck9yRGF0YSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMilcclxuICAgICAgcmV0dXJuIEJhc2U2NC5kZWNvZGVfMShzdHJPckRhdGEsIGVuY29kaW5nKTtcclxuXHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlXzIoc3RyT3JEYXRhKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gc3RyaW5nIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgYmFzZTY0LWVuY29kZWQgc3RyaW5nLiA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGRlY29kZWQgc3RyLjwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMChzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gQmFzZTY0LmRlY29kZShzdHIsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBUaGlzIG1ldGhvZCBkZWNvZGVzIHRoZSBnaXZlbiBzdHJpbmcgdXNpbmcgdGhlIGJhc2U2NC1lbmNvZGluZ1xyXG4gIC8vLyBzcGVjaWZpZWQgaW4gUkZDLTIwNDUgKFNlY3Rpb24gNi44KS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBiYXNlNjQtZW5jb2RlZCBzdHJpbmcuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5jb2RpbmdcIj5FbnZpcm9ubWVudC5FbmNvZGluZyBvciBudWxsLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgZGVjb2RlZCBzdHIuPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIGRlY29kZV8xKHN0cjogc3RyaW5nLCBlbmNvZGluZzogRW5jb2RpbmcpOiBzdHJpbmcge1xyXG5cclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIgPT09IG51bGwpIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoc3RyID09PSBcIlwiKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBsZXQgaW5zdGFuY2U6IElTT184ODU5XzFfRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgICAgICBsZXQgYXJyYXk6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgICAgICAgbGV0IGVuY29kaW5nMjogRW5jb2RpbmcgPSAoZW5jb2RpbmcgIT09IG51bGwpID8gZW5jb2RpbmcgOiBpbnN0YW5jZTtcclxuICAgICAgICAgIHJlc3VsdCA9IGVuY29kaW5nMi5HZXRTdHJpbmcoYXJyYXksIDAsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChleCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKGV4Lk1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gVGhpcyBtZXRob2QgZGVjb2RlcyB0aGUgZ2l2ZW4gYnl0ZVtdIHVzaW5nIHRoZSBiYXNlNjQtZW5jb2RpbmdcclxuICAvLy8gc3BlY2lmaWVkIGluIFJGQy0yMDQ1IChTZWN0aW9uIDYuOCkuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkYXRhXCI+dGhlIGJhc2U2NC1lbmNvZGVkIGRhdGEuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBkZWNvZGVkIDx2YXI+ZGF0YTwvdmFcclxuICBwcml2YXRlIHN0YXRpYyBkZWNvZGVfMihkYXRhOiBVaW50OEFycmF5KTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoZGF0YSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgbGV0IHRhaWw6IG51bWJlciA9IGRhdGEubGVuZ3RoO1xyXG4gICAgd2hpbGUgKGRhdGFbdGFpbCAtIDFdID09PSAnPScuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICB0YWlsID0gdGFpbCAtIDE7XHJcbiAgICB9XHJcbiAgICBsZXQgZGVzdDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KHRhaWwgLSBNYXRoLmZsb29yKGRhdGEubGVuZ3RoIC8gNCkpO1xyXG5cclxuICAgIC8vIEFTQ0lJIHByaW50YWJsZSB0byAwLTYzIGNvbnZlcnNpb25cclxuICAgIGZvciAobGV0IGlkeDogbnVtYmVyID0gMDsgaWR4IDwgZGF0YS5sZW5ndGg7IGlkeCA9IGlkeCArIDEpIHtcclxuICAgICAgZGF0YVtpZHhdID0gQmFzZTY0Ll9iYXNlNjREZWNNYXBbZGF0YVtpZHhdXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyA0LWJ5dGUgdG8gMy1ieXRlIGNvbnZlcnNpb25cclxuICAgIGxldCBzaWR4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGRpZHg6IG51bWJlcjtcclxuICAgIGZvciAoZGlkeCA9IDA7IGRpZHggPCBkZXN0Lmxlbmd0aCAtIDI7IGRpZHggPSBkaWR4ICsgMykge1xyXG4gICAgICBkZXN0W2RpZHhdID0gKCgoZGF0YVtzaWR4XSA8PCAyKSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDFdLCA0KSAmIDMpKTtcclxuICAgICAgZGVzdFtkaWR4ICsgMV0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcbiAgICAgIGRlc3RbZGlkeCArIDJdID0gKCgoZGF0YVtzaWR4ICsgMl0gPDwgNikgJiAyNTUpIHwgKGRhdGFbc2lkeCArIDNdICYgNjMpKTtcclxuICAgICAgc2lkeCA9IHNpZHggKyA0O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkaWR4IDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHhdIDw8IDIpICYgMjU1KSB8IChNaXNjLlVSU2hpZnQoZGF0YVtzaWR4ICsgMV0sIDQpICYgMykpO1xyXG4gICAgaWYgKChkaWR4ID0gZGlkeCArIDEpIDwgZGVzdC5sZW5ndGgpXHJcbiAgICAgIGRlc3RbZGlkeF0gPSAoKChkYXRhW3NpZHggKyAxXSA8PCA0KSAmIDI1NSkgfCAoTWlzYy5VUlNoaWZ0KGRhdGFbc2lkeCArIDJdLCAyKSAmIDE1KSk7XHJcblxyXG4gICAgcmV0dXJuIGRlc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZWQgYW5kIHJldHVybiBhbiBoZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIGRhdGE8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGRlY29kZVRvSGV4KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzdHIgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgaWYgKHN0ciA9PT0gXCJcIilcclxuICAgICAgcmV0dXJuIHN0cjtcclxuXHJcbiAgICByZXR1cm4gU3RyVXRpbC5zdHJpbmdUb0hleGFEdW1wKEJhc2U2NC5kZWNvZGUoc3RyKSwgMik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRlY29kZXMgYSBzdHJpbmcgdG8gYnl0ZSBhcnJheTwvc3VtbWFyeT5cclxuICBzdGF0aWMgZGVjb2RlVG9CeXRlKHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XHJcbiAgICBpZiAoc3RyID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAvLyBRQ1IgNzQwOTE4IGlmIHdlIGhhdmUgYW5kIGVtcHR5IGV4cHJlc3Npb24gaXQgaXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIgYXMgZW1wdHkgc3RyaW5nXHJcbiAgICAvLyBhbmQgY2hhbmdlZCBsb2NhbGx5IHRvIGEgc3RyaW5nIHdpdGggb25lIGJsYW5rIGVpdGhlciB3YXkgdGhleSBhcmUgbm90IHZhbGlkIGJhc2U2NCBlbmNvZGVkXHJcbiAgICAvLyBzdHJpbmcgYW5kIHNob3VsZCBub3QgYmUgZGVjb2RlZC5cclxuICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09PSBcIiBcIilcclxuICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGxldCBpbnN0YW5jZTogRW5jb2RpbmcgPSBJU09fODg1OV8xX0VuY29kaW5nLklTT184ODU5XzE7XHJcbiAgICAgIHJldHVybiBCYXNlNjQuZGVjb2RlKGluc3RhbmNlLkdldEJ5dGVzKHN0cikpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGV4KSB7XHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihleC5NZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGluaXRpYWxpemVFbmNNYXAoKSB7XHJcbiAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW1xyXG4gICAgICA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MyxcclxuICAgICAgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSxcclxuICAgICAgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCxcclxuICAgICAgNTUsIDU2LCA1NywgNDMsIDQ3XHJcbiAgICBdKTtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBpbml0aWFsaXplRGVjTWFwKCkge1xyXG4gICAgbGV0IGRlY01hcDogVWludDhBcnJheSA9IG5ldyBVaW50OEFycmF5KDEyOCk7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IEJhc2U2NC5fYmFzZTY0RW5jTWFwLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGRlY01hcFtCYXNlNjQuX2Jhc2U2NEVuY01hcFtpXV0gPSBpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZWNNYXA7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -51,4 +51,4 @@ export class DateTimeUtils {
|
|
|
51
51
|
return dateTimeString;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVRpbWVVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9EYXRlVGltZVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxTQUFTLEVBQUUsYUFBYSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE1BQU0sT0FBTyxhQUFhO0lBR2hCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBUztRQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWtCLEVBQUUsTUFBYyxFQUFFLE1BQVc7UUFDN0QsSUFBSSxjQUFzQixDQUFDO1FBQzNCLElBQUk7WUFDRixjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLFlBQVksU0FBUyxFQUFFO2dCQUMzQixJQUFJLE1BQU0sS0FBSyxZQUFZLENBQUMsdUJBQXVCLEVBQUU7b0JBQ25ELGNBQWMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRzt3QkFDNUgsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUc7d0JBQ3pGLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMxQztxQkFDSTtvQkFDSCxJQUFJLE1BQU0sS0FBSyxZQUFZLENBQUMscUJBQXFCLEVBQUU7d0JBQ2pELGNBQWMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHOzRCQUN6RCxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHOzRCQUM1QyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7d0JBQy9DLElBQUksUUFBUSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsRUFBRSxFQUFFOzRCQUNuQyxjQUFjLEdBQUcsY0FBYyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3lCQUNoRjs2QkFDSTs0QkFDSCxjQUFjLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQzt5QkFDMUU7cUJBQ0Y7eUJBQ0k7d0JBQ0gsSUFBSSxNQUFNLEtBQUssWUFBWSxDQUFDLHFCQUFxQixFQUFFOzRCQUNqRCxjQUFjLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO3lCQUMxSDs2QkFDSTs0QkFFSCxJQUFJLE1BQU0sS0FBSyxZQUFZLENBQUMsc0JBQXNCLEVBQUU7Z0NBQ2xELGNBQWMsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQzs2QkFDM0o7aUNBQ0k7Z0NBQ0gsTUFBTSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQ0FDOUMsSUFBSSxpQkFBaUIsR0FBa0IsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQ0FDM0QsY0FBYyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDOzZCQUMvQzt5QkFDRjtxQkFDRjtpQkFDRjthQUNGOztnQkFFQyxNQUFNLEVBQUUsQ0FBQztTQUNaO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlVGltZSwgRXhjZXB0aW9uLCBTdHJpbmdCdWlsZGVyfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtYTUxDb25zdGFudHN9IGZyb20gXCIuL1hNTENvbnN0YW50c1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVUaW1lVXRpbHMge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJldHVybnMgdGhlIG51bWJlciBpbiBhIDIgZGlnaXQgc3RyaW5nXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaW50MnN0cihuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChuID4gOSkgPyBuLnRvU3RyaW5nKCkgOiAoXCIwXCIgKyBuKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBUb1N0cmluZyhkYXRlVGltZTogRGF0ZVRpbWUsIGZvcm1hdDogc3RyaW5nLCBsb2dnZXI6IGFueSk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZVRpbWVTdHJpbmc6IHN0cmluZztcclxuICAgIHRyeSB7XHJcbiAgICAgIGRhdGVUaW1lU3RyaW5nID0gZGF0ZVRpbWUuRm9ybWF0KGZvcm1hdCk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXgpIHtcclxuICAgICAgaWYgKGV4IGluc3RhbmNlb2YgRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gWE1MQ29uc3RhbnRzLkNBQ0hFRF9EQVRFX1RJTUVfRk9STUFUKSB7XHJcbiAgICAgICAgICBkYXRlVGltZVN0cmluZyA9IERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5EYXkpICsgXCIvXCIgKyBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuTW9udGgpICsgXCIvXCIgKyBkYXRlVGltZS5ZZWFyICsgXCIgXCIgK1xyXG4gICAgICAgICAgICBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuSG91cikgKyBcIjpcIiArIERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5NaW51dGUpICsgXCI6XCIgK1xyXG4gICAgICAgICAgICBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuU2Vjb25kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZm9ybWF0ID09PSBYTUxDb25zdGFudHMuRVJST1JfTE9HX1RJTUVfRk9STUFUKSB7XHJcbiAgICAgICAgICAgIGRhdGVUaW1lU3RyaW5nID0gRGF0ZVRpbWVVdGlscy5pbnQyc3RyKGRhdGVUaW1lLkhvdXIpICsgXCI6XCIgK1xyXG4gICAgICAgICAgICAgIERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5NaW51dGUpICsgXCI6XCIgK1xyXG4gICAgICAgICAgICAgIERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5TZWNvbmQpICsgXCIuXCI7XHJcbiAgICAgICAgICAgIGlmIChkYXRlVGltZS5NaWxsaXNlY29uZCAlIDEwMCA+IDUwKSB7XHJcbiAgICAgICAgICAgICAgZGF0ZVRpbWVTdHJpbmcgPSBkYXRlVGltZVN0cmluZyArIChNYXRoLmZsb29yKGRhdGVUaW1lLk1pbGxpc2Vjb25kIC8gMTAwKSArIDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIGRhdGVUaW1lU3RyaW5nID0gZGF0ZVRpbWVTdHJpbmcgKyBNYXRoLmZsb29yKGRhdGVUaW1lLk1pbGxpc2Vjb25kIC8gMTAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09IFhNTENvbnN0YW50cy5FUlJPUl9MT0dfREFURV9GT1JNQVQpIHtcclxuICAgICAgICAgICAgICBkYXRlVGltZVN0cmluZyA9IERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5EYXkpICsgXCIvXCIgKyBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuTW9udGgpICsgXCIvXCIgKyBkYXRlVGltZS5ZZWFyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZm9ybWF0ID09PSBYTUxDb25zdGFudHMuSFRUUF9FUlJPUl9USU1FX0ZPUk1BVCkge1xyXG4gICAgICAgICAgICAgICAgZGF0ZVRpbWVTdHJpbmcgPSBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuSG91cikgKyBcIjpcIiArIERhdGVUaW1lVXRpbHMuaW50MnN0cihkYXRlVGltZS5NaW51dGUpICsgXCI6XCIgKyBEYXRlVGltZVV0aWxzLmludDJzdHIoZGF0ZVRpbWUuU2Vjb25kKSArIFwiLlwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxvZ2dlci5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhleC5NZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIGxldCBkYXRlVGltZVRtcFN0cmluZzogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICAgICAgICAgICAgICBkYXRlVGltZVN0cmluZyA9IGRhdGVUaW1lVG1wU3RyaW5nLlRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBleDtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlVGltZVN0cmluZztcclxuICB9XHJcbn1cclxuIl19
|
package/esm2020/src/DateUtil.mjs
CHANGED
|
@@ -55,4 +55,4 @@ export class DateUtil {
|
|
|
55
55
|
}
|
|
56
56
|
DateUtil._localMonths = new Array(13);
|
|
57
57
|
DateUtil._localDays = new Array(8);
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0ZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91dGlscy9zcmMvRGF0ZVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTVDLE1BQU0sY0FBYyxHQUFXLEVBQUUsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBVyxFQUFFLENBQUM7QUFFaEMsTUFBTSxPQUFPLFFBQVE7SUFTbkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFhO1FBQ2pDLElBQUksUUFBUSxHQUFXLGNBQWMsQ0FBQztRQUd0QyxJQUFJLE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFHbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUNsQixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFFbkUsSUFBSSxDQUFDLEdBQUcsUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7d0JBQ2hDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQzt3QkFDNUQsT0FBTyxRQUFRLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNyRCxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO3lCQUMzRDtxQkFDRjt5QkFDSTt3QkFDSCxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7cUJBQ2hHO2lCQUNGO2FBQ0Y7aUJBQ0k7Z0JBQ0gsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzNEO2FBQ0Y7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBQztJQUMvQixDQUFDO0lBTUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFhO1FBQy9CLElBQUksTUFBTSxHQUFXLFlBQVksQ0FBQztRQUdsQyxJQUFJLE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxXQUFXLEVBQUU7WUFHakQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO2dCQUNsQixRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFFakUsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7d0JBQzlCLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQzt3QkFDeEQsT0FBTyxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFOzRCQUNqRCxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO3lCQUN2RDtxQkFDRjt5QkFDSTt3QkFDSCxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7cUJBQ3hGO2lCQUNGO2FBQ0Y7aUJBQ0k7Z0JBQ0gsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUNuRSxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3pEO2FBQ0Y7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUM3QixDQUFDOztBQXZFdUIscUJBQVksR0FBYSxJQUFJLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztBQUMvQyxtQkFBVSxHQUFhLElBQUksS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQSUNJbnRlcmZhY2V9IGZyb20gXCIuL1BJQ0ludGVyZmFjZVwiO1xyXG5cclxuY29uc3QgREFURV9NT05USF9MRU46IG51bWJlciA9IDEwO1xyXG5jb25zdCBEQVRFX0RPV19MRU46IG51bWJlciA9IDEwO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVVdGlsIHtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvY2FsTW9udGhzOiBzdHJpbmdbXSA9IG5ldyBBcnJheTxzdHJpbmc+KDEzKTtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9jYWxEYXlzOiBzdHJpbmdbXSA9IG5ldyBBcnJheTxzdHJpbmc+KDgpO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICBleHRyYWN0IHRoZSB2ZWN0b3Igd2hpY2ggY29udGFpbnMgdGhlIG5hbWVzIG9mIHRoZSBtb250aHMsIGFzIHNwZWNpZmllZCBieSB0aGVcclxuICAvLy8gIGxhbmd1YWdlIENBQlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGdldExvY2FsTW9udGhzKG5hbWVzOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgbW9udGhMZW46IG51bWJlciA9IERBVEVfTU9OVEhfTEVOO1xyXG5cclxuICAgIC8vIGlmIGl0J3MgdGhlIGZpcnN0IHRpbWUgdGhlbiBhY2Nlc3MgdGhlIGxhbmd1YWdlIENBQiBhbmQgdGFrZSB0aGUgdmFsdWVzXHJcbiAgICBpZiAodHlwZW9mIERhdGVVdGlsLl9sb2NhbE1vbnRoc1swXSA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgLy9jdXQgdGhlIHN0cmluZyBpbnRvIHNlcGFyYXRlIHZhbHVlc1xyXG4gICAgICBpZiAobmFtZXMgIT09IG51bGwpIHtcclxuICAgICAgICBEYXRlVXRpbC5fbG9jYWxNb250aHNbMF0gPSBQSUNJbnRlcmZhY2UuZGF0ZV9tb250aF9zdHJbMF07XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMTsgaSA8IERhdGVVdGlsLl9sb2NhbE1vbnRocy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG5cclxuICAgICAgICAgIGlmIChpICogbW9udGhMZW4gPj0gbmFtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIERhdGVVdGlsLl9sb2NhbE1vbnRoc1tpXSA9IG5hbWVzLnN1YnN0cigoaSAtIDEpICogbW9udGhMZW4pO1xyXG4gICAgICAgICAgICB3aGlsZSAobW9udGhMZW4gLSBEYXRlVXRpbC5fbG9jYWxNb250aHNbaV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIERhdGVVdGlsLl9sb2NhbE1vbnRoc1tpXSA9IERhdGVVdGlsLl9sb2NhbE1vbnRoc1tpXSArIFwiIFwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgRGF0ZVV0aWwuX2xvY2FsTW9udGhzW2ldID0gbmFtZXMuc3Vic3RyKChpIC0gMSkgKiBtb250aExlbiwgaSAqIG1vbnRoTGVuIC0gKGkgLSAxKSAqIG1vbnRoTGVuKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IERhdGVVdGlsLl9sb2NhbE1vbnRocy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgICAgRGF0ZVV0aWwuX2xvY2FsTW9udGhzW2ldID0gUElDSW50ZXJmYWNlLmRhdGVfbW9udGhfc3RyW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIERhdGVVdGlsLl9sb2NhbE1vbnRocztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleHRyYWN0IHRoZSB2ZWN0b3Igd2hpY2ggY29udGFpbnMgdGhlIG5hbWVzIG9mIHRoZSBkYXlzLCBhcyBzcGVjaWZpZWQgYnkgdGhlXHJcbiAgLy8vICAgbGFuZ3VhZ2UgQ0FCXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgZ2V0TG9jYWxEYXlzKG5hbWVzOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICBsZXQgZG93TGVuOiBudW1iZXIgPSBEQVRFX0RPV19MRU47XHJcblxyXG4gICAgLy8gaWYgaXQncyB0aGUgZmlyc3QgdGltZSB0aGVuIGFjY2VzcyB0aGUgbGFuZ3VhZ2UgQ0FCIGFuZCB0YWtlIHRoZSB2YWx1ZXNcclxuICAgIGlmICh0eXBlb2YgRGF0ZVV0aWwuX2xvY2FsRGF5c1swXSA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgLy9jdXQgdGhlIHN0cmluZyBpbnRvIHNlcGFyYXRlIHZhbHVlc1xyXG4gICAgICBpZiAobmFtZXMgIT09IG51bGwpIHtcclxuICAgICAgICBEYXRlVXRpbC5fbG9jYWxEYXlzWzBdID0gUElDSW50ZXJmYWNlLmRhdGVfZG93X3N0clswXTtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAxOyBpIDwgRGF0ZVV0aWwuX2xvY2FsRGF5cy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG5cclxuICAgICAgICAgIGlmIChpICogZG93TGVuID49IG5hbWVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICBEYXRlVXRpbC5fbG9jYWxEYXlzW2ldID0gbmFtZXMuc3Vic3RyKChpIC0gMSkgKiBkb3dMZW4pO1xyXG4gICAgICAgICAgICB3aGlsZSAoZG93TGVuIC0gRGF0ZVV0aWwuX2xvY2FsRGF5c1tpXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgRGF0ZVV0aWwuX2xvY2FsRGF5c1tpXSA9IERhdGVVdGlsLl9sb2NhbERheXNbaV0gKyBcIiBcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIERhdGVVdGlsLl9sb2NhbERheXNbaV0gPSBuYW1lcy5zdWJzdHIoKGkgLSAxKSAqIGRvd0xlbiwgaSAqIGRvd0xlbiAtIChpIC0gMSkgKiBkb3dMZW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgRGF0ZVV0aWwuX2xvY2FsTW9udGhzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgICBEYXRlVXRpbC5fbG9jYWxNb250aHNbaV0gPSBQSUNJbnRlcmZhY2UuZGF0ZV9kb3dfc3RyW2ldO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIERhdGVVdGlsLl9sb2NhbERheXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2020/src/Misc.mjs
CHANGED
|
@@ -85,7 +85,7 @@ export class Misc {
|
|
|
85
85
|
intArray = new Array(vals.length);
|
|
86
86
|
let outInt = new RefParam(0);
|
|
87
87
|
for (let iCtr = 0; iCtr < vals.length; iCtr = iCtr + 1) {
|
|
88
|
-
|
|
88
|
+
NNumber.TryParse(vals[iCtr], outInt);
|
|
89
89
|
intArray[iCtr] = outInt.value;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -95,4 +95,4 @@ export class Misc {
|
|
|
95
95
|
return fileName.toLowerCase().startsWith("http");
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9NaXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFDTSxhQUFhLEVBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxRQUFRLEVBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFPOUIsTUFBTSxPQUFPLElBQUk7SUFPZixNQUFNLENBQUMsZUFBZSxDQUFDLFNBQW9CO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFPRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQXFCO1FBQ3ZDLElBQUksVUFBVSxHQUFjLElBQUksQ0FBQztRQUNqQyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkQsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFXLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QztTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBcUI7UUFDdEMsSUFBSSxTQUFTLEdBQWUsSUFBSSxDQUFDO1FBQ2pDLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtZQUN2QixTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxF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QyxXQUFXLENBQUMsbUJBQTJCO1FBQzVDLElBQUksUUFBUSxHQUFhLElBQUksS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDL0MsSUFBSSxJQUFJLEdBQWEsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFMUMsSUFBSSxNQUFNLEdBQXFCLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLEtBQUssSUFBSSxJQUFJLEdBQVcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUM5RCxJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDL0I7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQzlCLE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbiBvcmRlciB0byBjb252ZXJ0IHNvbWUgZnVuY3Rpb25hbGl0eSB0byBWaXN1YWwgQyMsIHRoZSBKYXZhIExhbmd1YWdlIENvbnZlcnNpb24gQXNzaXN0YW50XHJcbi8vIGNyZWF0ZXMgXCJzdXBwb3J0IGNsYXNzZXNcIiB0aGF0IGR1cGxpY2F0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb25hbGl0eS5cclxuLy9cclxuLy8gU3VwcG9ydCBjbGFzc2VzIHJlcGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgb3JpZ2luYWwgY29kZSwgYnV0IGluIHNvbWUgY2FzZXMgdGhleSBhcmVcclxuLy8gc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJhbGx5LiBBbHRob3VnaCBldmVyeSBlZmZvcnQgaXMgbWFkZSB0byBwcmVzZXJ2ZSB0aGVcclxuLy8gb3JpZ2luYWwgYXJjaGl0ZWN0dXJlIG9mIHRoZSBhcHBsaWNhdGlvbiBpbiB0aGUgY29udmVydGVkIHByb2plY3QsIHRoZSB1c2VyIHNob3VsZCBiZSBhd2FyZSB0aGF0XHJcbi8vIHRoZSBwcmltYXJ5IGdvYWwgb2YgdGhlc2Ugc3VwcG9ydCBjbGFzc2VzIGlzIHRvIHJlcGxpY2F0ZSBmdW5jdGlvbmFsaXR5LCBhbmQgdGhhdCBhdCB0aW1lc1xyXG4vLyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSByZXN1bHRpbmcgc29sdXRpb24gbWF5IGRpZmZlciBzb21ld2hhdC5cclxuXHJcblxyXG5pbXBvcnQge1xyXG4gIEV4Y2VwdGlvbiwgU3RyaW5nQnVpbGRlcixcclxuICBOU3RyaW5nLCBOTnVtYmVyLFxyXG4gIERhdGVUaW1lLCBSZWZQYXJhbVxyXG59IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuXHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBDb250YWlucyBjb252ZXJzaW9uIHN1cHBvcnQgZWxlbWVudHMgc3VjaCBhcyBjbGFzc2VzLCBpbnRlcmZhY2VzIGFuZCBzdGF0aWMgbWV0aG9kcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIE1pc2Mge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIHN0YWNrIHRyYWNlIHRvIHRoZSByZWNlaXZlZCBzdHJlYW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRocm93YWJsZVwiPkV4Y2VwdGlvbiB0byBvYnRhaW4gaW5mb3JtYXRpb24gZnJvbTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyZWFtXCI+T3V0cHV0IHNyZWFtIHVzZWQgdG8gd3JpdGUgdG88L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZVN0YWNrVHJhY2UodGhyb3dhYmxlOiBFeGNlcHRpb24pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHRocm93YWJsZS5NZXNzYWdlKTtcclxuICAgIGNvbnNvbGUubG9nKHRocm93YWJsZS5TdGFja1RyYWNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmVjZWl2ZXMgYSBieXRlIGFycmF5IGFuZCByZXR1cm5zIGl0IHRyYW5zZm9ybWVkIGluIGFuIGJ5dGUgYXJyYXlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImJ5dGVBcnJheVwiPkJ5dGUgYXJyYXkgdG8gcHJvY2VzczwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSB0cmFuc2Zvcm1lZCBhcnJheTwvcmV0dXJucz5cclxuICBzdGF0aWMgVG9TQnl0ZUFycmF5KGJ5dGVBcnJheTogVWludDhBcnJheSk6IEludDhBcnJheSB7XHJcbiAgICBsZXQgc2J5dGVBcnJheTogSW50OEFycmF5ID0gbnVsbDtcclxuICAgIGlmIChieXRlQXJyYXkgIT09IG51bGwpIHtcclxuICAgICAgc2J5dGVBcnJheSA9IG5ldyBJbnQ4QXJyYXkoYnl0ZUFycmF5Lmxlbmd0aCk7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBieXRlQXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBzYnl0ZUFycmF5W2ldID0gPG51bWJlcj5ieXRlQXJyYXlbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzYnl0ZUFycmF5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZWNlaXZlcyBzYnl0ZSBhcnJheSBhbmQgcmV0dXJucyBpdCB0cmFuc2Zvcm1lZCBpbiBhIGJ5dGUgYXJyYXlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNieXRlQXJyYXlcIj5zYnl0ZSBhcnJheSB0byBwcm9jZXNzPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VGhlIHRyYW5zZm9ybWVkIGFycmF5PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUb0J5dGVBcnJheShzYnl0ZUFycmF5OiBJbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcclxuICAgIGxldCBieXRlQXJyYXk6IFVpbnQ4QXJyYXkgPSBudWxsO1xyXG4gICAgaWYgKHNieXRlQXJyYXkgIT09IG51bGwpIHtcclxuICAgICAgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2J5dGVBcnJheS5sZW5ndGgpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc2J5dGVBcnJheS5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGJ5dGVBcnJheVtpXSA9IDxudW1iZXI+c2J5dGVBcnJheVtpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ5dGVBcnJheTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQ29tcGFyZXMgbnVtYmVyIG9mIGJ5dGVzIGluIHR3byBieXRlIGFycmF5czwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VyY2VcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlc3RpbmF0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJudW1iZXJPZkJ5dGVzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGJvb2xlbiB0cnVlIGlmIGVxdWFsPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDb21wYXJlQnl0ZUFycmF5KHNvdXJjZTogVWludDhBcnJheSwgZGVzdGluYXRpb246IFVpbnQ4QXJyYXksIG51bWJlck9mQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPj0gbnVtYmVyT2ZCeXRlcyAmJiBkZXN0aW5hdGlvbi5sZW5ndGggPj0gbnVtYmVyT2ZCeXRlcykge1xyXG4gICAgICBmb3IgKGxldCBsZW46IG51bWJlciA9IDA7IGxlbiA8IG51bWJlck9mQnl0ZXM7IGxlbisrKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZVtsZW5dICE9PSBkZXN0aW5hdGlvbltsZW5dKVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGVyZm9ybXMgYW4gdW5zaWduZWQgYml0d2lzZSByaWdodCBzaGlmdCB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJudW1iZXJcIj5OdW1iZXIgdG8gb3BlcmF0ZSBvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYml0c1wiPkFtbW91bnQgb2YgYml0cyB0byBzaGlmdDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSByZXN1bHRpbmcgbnVtYmVyIGZyb20gdGhlIHNoaWZ0IG9wZXJhdGlvbjwvcmV0dXJucz5cclxuICAvLyBUT0RPOiBpbnN0ZWFkIG9mIGNhbGxpbmcgVVJTaGlmdChudW1iZXIsIGJpdHMpLCB3ZSBjYW4gdXNlKCh1aW50KW51bWJlcikgPj4gYml0cy5cclxuICBzdGF0aWMgVVJTaGlmdChudW1iZXI6IG51bWJlciwgYml0czogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIGlmIChudW1iZXIgPj0gMCkge1xyXG4gICAgICByZXN1bHQgPSBudW1iZXIgPj4gYml0cztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXN1bHQgPSAobnVtYmVyID4+IGJpdHMpICsgKDIgPDwgfmJpdHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHN5c3RlbSdzIHRpbWUgaW4gbWlsbGlzZWNvbmRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcclxuICAgIC8vIFRPRE8gLSBjaGVjayBpZiB3ZSBuZWVkIHRoaXMgYWRqdXN0bWVudFxyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKERhdGVUaW1lLk5vdy5UaWNrcyAtIDYyMTM1NTk2ODAwMDAwMDAwMCkgLyAxMDAwMCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbXBhcmVzIDIgaW50IGFycmF5c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJyYXlPbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFycmF5VHdvXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBhcnJheXMgYXJlIGVxdWFsIGVsc2UgZmFsc2U8L3JldHVybnM+XHJcbiAgc3RhdGljIENvbXBhcmVJbnRBcnJheXMoYXJyYXlPbmU6IG51bWJlcltdLCBhcnJheVR3bzogbnVtYmVyW10pOiBib29sZWFuIHtcclxuICAgIGxldCBhcmVFcXVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKGFycmF5T25lID09PSBhcnJheVR3bykge1xyXG4gICAgICBhcmVFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGFycmF5T25lICE9PSBudWxsICYmIGFycmF5VHdvICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGFycmF5T25lLmxlbmd0aCA9PT0gYXJyYXlUd28ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYXJyYXlPbmUubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5T25lW2ldICE9PSBhcnJheVR3b1tpXSkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFyZUVxdWFsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcmVFcXVhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBmb3IgdGhlIHZhbHVlcyBwYXNzZWQgaW4gaW50IGFycmF5LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVzXCI+SW50ZWdlciBhcnJheTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPmNvbW1hIHNlcGFyYXRlZCBzdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbW1hU2VwZXJhdGVkU3RyaW5nKGludEFycmF5OiBudW1iZXJbXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGVtcDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICBmb3IgKGxldCB2YWw6IG51bWJlciA9IDA7IHZhbCA8IGludEFycmF5Lmxlbmd0aDsgdmFsID0gdmFsICsgMSkge1xyXG4gICAgICBsZXQgdmFsdWU6IG51bWJlciA9IGludEFycmF5W3ZhbF07XHJcbiAgICAgIGlmICh0ZW1wLkxlbmd0aCA+IDApIHtcclxuICAgICAgICB0ZW1wLkFwcGVuZChcIixcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGVtcC5BcHBlbmQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXAuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyBpbnQgYXJyYXkgb3V0IG9mIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+Y29tbWEgc2VwYXJhdGVkIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPkludGVnZXIgYXJyYXk8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEludEFycmF5KGNvbW1hU2VwYXJhdGVkVmFsdWU6IHN0cmluZyk6IG51bWJlcltdIHtcclxuICAgIGxldCBpbnRBcnJheTogbnVtYmVyW10gPSBuZXcgQXJyYXk8bnVtYmVyPigwKTtcclxuXHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjb21tYVNlcGFyYXRlZFZhbHVlKSkge1xyXG4gICAgICBsZXQgdmFsczogc3RyaW5nW10gPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgIGludEFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4odmFscy5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IG91dEludDogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSgwKTtcclxuICAgICAgZm9yIChsZXQgaUN0cjogbnVtYmVyID0gMDsgaUN0ciA8IHZhbHMubGVuZ3RoOyBpQ3RyID0gaUN0ciArIDEpIHtcclxuICAgICAgICBsZXQgX3IgPSBOTnVtYmVyLlRyeVBhcnNlKHZhbHNbaUN0cl0sIG91dEludCk7XHJcbiAgICAgICAgaW50QXJyYXlbaUN0cl0gPSBvdXRJbnQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW50QXJyYXk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNXZWJVcmwoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZpbGVOYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImh0dHBcIik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlzYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9NaXNjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFDTSxhQUFhLEVBQ3hCLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLFFBQVEsRUFBRSxRQUFRLEVBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFPOUIsTUFBTSxPQUFPLElBQUk7SUFPZixNQUFNLENBQUMsZUFBZSxDQUFDLFNBQW9CO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFPRCxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQXFCO1FBQ3ZDLElBQUksVUFBVSxHQUFjLElBQUksQ0FBQztRQUNqQyxJQUFJLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsVUFBVSxHQUFHLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdkQsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFXLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QztTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQU9ELE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBcUI7UUFDdEMsSUFBSSxTQUFTLEdBQWUsSUFBSSxDQUFDO1FBQ2pDLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtZQUN2QixTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxF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QyxXQUFXLENBQUMsbUJBQTJCO1FBQzVDLElBQUksUUFBUSxHQUFhLElBQUksS0FBSyxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBRTlDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDL0MsSUFBSSxJQUFJLEdBQWEsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BELFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBUyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFMUMsSUFBSSxNQUFNLEdBQXFCLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9DLEtBQUssSUFBSSxJQUFJLEdBQVcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFO2dCQUM5RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDckMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7YUFDL0I7U0FDRjtRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQzlCLE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbiBvcmRlciB0byBjb252ZXJ0IHNvbWUgZnVuY3Rpb25hbGl0eSB0byBWaXN1YWwgQyMsIHRoZSBKYXZhIExhbmd1YWdlIENvbnZlcnNpb24gQXNzaXN0YW50XHJcbi8vIGNyZWF0ZXMgXCJzdXBwb3J0IGNsYXNzZXNcIiB0aGF0IGR1cGxpY2F0ZSB0aGUgb3JpZ2luYWwgZnVuY3Rpb25hbGl0eS5cclxuLy9cclxuLy8gU3VwcG9ydCBjbGFzc2VzIHJlcGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgb3JpZ2luYWwgY29kZSwgYnV0IGluIHNvbWUgY2FzZXMgdGhleSBhcmVcclxuLy8gc3Vic3RhbnRpYWxseSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJhbGx5LiBBbHRob3VnaCBldmVyeSBlZmZvcnQgaXMgbWFkZSB0byBwcmVzZXJ2ZSB0aGVcclxuLy8gb3JpZ2luYWwgYXJjaGl0ZWN0dXJlIG9mIHRoZSBhcHBsaWNhdGlvbiBpbiB0aGUgY29udmVydGVkIHByb2plY3QsIHRoZSB1c2VyIHNob3VsZCBiZSBhd2FyZSB0aGF0XHJcbi8vIHRoZSBwcmltYXJ5IGdvYWwgb2YgdGhlc2Ugc3VwcG9ydCBjbGFzc2VzIGlzIHRvIHJlcGxpY2F0ZSBmdW5jdGlvbmFsaXR5LCBhbmQgdGhhdCBhdCB0aW1lc1xyXG4vLyB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSByZXN1bHRpbmcgc29sdXRpb24gbWF5IGRpZmZlciBzb21ld2hhdC5cclxuXHJcblxyXG5pbXBvcnQge1xyXG4gIEV4Y2VwdGlvbiwgU3RyaW5nQnVpbGRlcixcclxuICBOU3RyaW5nLCBOTnVtYmVyLFxyXG4gIERhdGVUaW1lLCBSZWZQYXJhbVxyXG59IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5cclxuXHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyBDb250YWlucyBjb252ZXJzaW9uIHN1cHBvcnQgZWxlbWVudHMgc3VjaCBhcyBjbGFzc2VzLCBpbnRlcmZhY2VzIGFuZCBzdGF0aWMgbWV0aG9kcy5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIE1pc2Mge1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIHN0YWNrIHRyYWNlIHRvIHRoZSByZWNlaXZlZCBzdHJlYW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRocm93YWJsZVwiPkV4Y2VwdGlvbiB0byBvYnRhaW4gaW5mb3JtYXRpb24gZnJvbTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyZWFtXCI+T3V0cHV0IHNyZWFtIHVzZWQgdG8gd3JpdGUgdG88L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZVN0YWNrVHJhY2UodGhyb3dhYmxlOiBFeGNlcHRpb24pOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHRocm93YWJsZS5NZXNzYWdlKTtcclxuICAgIGNvbnNvbGUubG9nKHRocm93YWJsZS5TdGFja1RyYWNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmVjZWl2ZXMgYSBieXRlIGFycmF5IGFuZCByZXR1cm5zIGl0IHRyYW5zZm9ybWVkIGluIGFuIGJ5dGUgYXJyYXlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImJ5dGVBcnJheVwiPkJ5dGUgYXJyYXkgdG8gcHJvY2VzczwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSB0cmFuc2Zvcm1lZCBhcnJheTwvcmV0dXJucz5cclxuICBzdGF0aWMgVG9TQnl0ZUFycmF5KGJ5dGVBcnJheTogVWludDhBcnJheSk6IEludDhBcnJheSB7XHJcbiAgICBsZXQgc2J5dGVBcnJheTogSW50OEFycmF5ID0gbnVsbDtcclxuICAgIGlmIChieXRlQXJyYXkgIT09IG51bGwpIHtcclxuICAgICAgc2J5dGVBcnJheSA9IG5ldyBJbnQ4QXJyYXkoYnl0ZUFycmF5Lmxlbmd0aCk7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBieXRlQXJyYXkubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBzYnl0ZUFycmF5W2ldID0gPG51bWJlcj5ieXRlQXJyYXlbaV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzYnl0ZUFycmF5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZWNlaXZlcyBzYnl0ZSBhcnJheSBhbmQgcmV0dXJucyBpdCB0cmFuc2Zvcm1lZCBpbiBhIGJ5dGUgYXJyYXlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNieXRlQXJyYXlcIj5zYnl0ZSBhcnJheSB0byBwcm9jZXNzPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VGhlIHRyYW5zZm9ybWVkIGFycmF5PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUb0J5dGVBcnJheShzYnl0ZUFycmF5OiBJbnQ4QXJyYXkpOiBVaW50OEFycmF5IHtcclxuICAgIGxldCBieXRlQXJyYXk6IFVpbnQ4QXJyYXkgPSBudWxsO1xyXG4gICAgaWYgKHNieXRlQXJyYXkgIT09IG51bGwpIHtcclxuICAgICAgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoc2J5dGVBcnJheS5sZW5ndGgpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc2J5dGVBcnJheS5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGJ5dGVBcnJheVtpXSA9IDxudW1iZXI+c2J5dGVBcnJheVtpXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ5dGVBcnJheTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQ29tcGFyZXMgbnVtYmVyIG9mIGJ5dGVzIGluIHR3byBieXRlIGFycmF5czwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VyY2VcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlc3RpbmF0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJudW1iZXJPZkJ5dGVzXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGJvb2xlbiB0cnVlIGlmIGVxdWFsPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDb21wYXJlQnl0ZUFycmF5KHNvdXJjZTogVWludDhBcnJheSwgZGVzdGluYXRpb246IFVpbnQ4QXJyYXksIG51bWJlck9mQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPj0gbnVtYmVyT2ZCeXRlcyAmJiBkZXN0aW5hdGlvbi5sZW5ndGggPj0gbnVtYmVyT2ZCeXRlcykge1xyXG4gICAgICBmb3IgKGxldCBsZW46IG51bWJlciA9IDA7IGxlbiA8IG51bWJlck9mQnl0ZXM7IGxlbisrKSB7XHJcbiAgICAgICAgaWYgKHNvdXJjZVtsZW5dICE9PSBkZXN0aW5hdGlvbltsZW5dKVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUGVyZm9ybXMgYW4gdW5zaWduZWQgYml0d2lzZSByaWdodCBzaGlmdCB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJudW1iZXJcIj5OdW1iZXIgdG8gb3BlcmF0ZSBvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYml0c1wiPkFtbW91bnQgb2YgYml0cyB0byBzaGlmdDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSByZXN1bHRpbmcgbnVtYmVyIGZyb20gdGhlIHNoaWZ0IG9wZXJhdGlvbjwvcmV0dXJucz5cclxuICAvLyBUT0RPOiBpbnN0ZWFkIG9mIGNhbGxpbmcgVVJTaGlmdChudW1iZXIsIGJpdHMpLCB3ZSBjYW4gdXNlKCh1aW50KW51bWJlcikgPj4gYml0cy5cclxuICBzdGF0aWMgVVJTaGlmdChudW1iZXI6IG51bWJlciwgYml0czogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIGlmIChudW1iZXIgPj0gMCkge1xyXG4gICAgICByZXN1bHQgPSBudW1iZXIgPj4gYml0cztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXN1bHQgPSAobnVtYmVyID4+IGJpdHMpICsgKDIgPDwgfmJpdHMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IHN5c3RlbSdzIHRpbWUgaW4gbWlsbGlzZWNvbmRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRTeXN0ZW1NaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcclxuICAgIC8vIFRPRE8gLSBjaGVjayBpZiB3ZSBuZWVkIHRoaXMgYWRqdXN0bWVudFxyXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoKERhdGVUaW1lLk5vdy5UaWNrcyAtIDYyMTM1NTk2ODAwMDAwMDAwMCkgLyAxMDAwMCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENvbXBhcmVzIDIgaW50IGFycmF5c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYXJyYXlPbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFycmF5VHdvXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBhcnJheXMgYXJlIGVxdWFsIGVsc2UgZmFsc2U8L3JldHVybnM+XHJcbiAgc3RhdGljIENvbXBhcmVJbnRBcnJheXMoYXJyYXlPbmU6IG51bWJlcltdLCBhcnJheVR3bzogbnVtYmVyW10pOiBib29sZWFuIHtcclxuICAgIGxldCBhcmVFcXVhbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKGFycmF5T25lID09PSBhcnJheVR3bykge1xyXG4gICAgICBhcmVFcXVhbCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKGFycmF5T25lICE9PSBudWxsICYmIGFycmF5VHdvICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGFycmF5T25lLmxlbmd0aCA9PT0gYXJyYXlUd28ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgYXJyYXlPbmUubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICAgICAgaWYgKGFycmF5T25lW2ldICE9PSBhcnJheVR3b1tpXSkge1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGFyZUVxdWFsID0gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcmVFcXVhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyB0aGUgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBmb3IgdGhlIHZhbHVlcyBwYXNzZWQgaW4gaW50IGFycmF5LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVzXCI+SW50ZWdlciBhcnJheTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPmNvbW1hIHNlcGFyYXRlZCBzdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbW1hU2VwZXJhdGVkU3RyaW5nKGludEFycmF5OiBudW1iZXJbXSk6IHN0cmluZyB7XHJcbiAgICBsZXQgdGVtcDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcbiAgICBmb3IgKGxldCB2YWw6IG51bWJlciA9IDA7IHZhbCA8IGludEFycmF5Lmxlbmd0aDsgdmFsID0gdmFsICsgMSkge1xyXG4gICAgICBsZXQgdmFsdWU6IG51bWJlciA9IGludEFycmF5W3ZhbF07XHJcbiAgICAgIGlmICh0ZW1wLkxlbmd0aCA+IDApIHtcclxuICAgICAgICB0ZW1wLkFwcGVuZChcIixcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGVtcC5BcHBlbmQodmFsdWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXAuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyBpbnQgYXJyYXkgb3V0IG9mIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+Y29tbWEgc2VwYXJhdGVkIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPkludGVnZXIgYXJyYXk8L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEludEFycmF5KGNvbW1hU2VwYXJhdGVkVmFsdWU6IHN0cmluZyk6IG51bWJlcltdIHtcclxuICAgIGxldCBpbnRBcnJheTogbnVtYmVyW10gPSBuZXcgQXJyYXk8bnVtYmVyPigwKTtcclxuXHJcbiAgICBpZiAoIU5TdHJpbmcuSXNOdWxsT3JFbXB0eShjb21tYVNlcGFyYXRlZFZhbHVlKSkge1xyXG4gICAgICBsZXQgdmFsczogc3RyaW5nW10gPSBjb21tYVNlcGFyYXRlZFZhbHVlLnNwbGl0KCcsJyk7XHJcbiAgICAgIGludEFycmF5ID0gbmV3IEFycmF5PG51bWJlcj4odmFscy5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IG91dEludDogUmVmUGFyYW08bnVtYmVyPiA9IG5ldyBSZWZQYXJhbSgwKTtcclxuICAgICAgZm9yIChsZXQgaUN0cjogbnVtYmVyID0gMDsgaUN0ciA8IHZhbHMubGVuZ3RoOyBpQ3RyID0gaUN0ciArIDEpIHtcclxuICAgICAgICBOTnVtYmVyLlRyeVBhcnNlKHZhbHNbaUN0cl0sIG91dEludCk7XHJcbiAgICAgICAgaW50QXJyYXlbaUN0cl0gPSBvdXRJbnQudmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW50QXJyYXk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNXZWJVcmwoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGZpbGVOYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcImh0dHBcIik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
package/esm2020/src/StrUtil.mjs
CHANGED
|
@@ -249,7 +249,6 @@ export class StrUtil {
|
|
|
249
249
|
static indexOf(str, strings, offset, SARindex) {
|
|
250
250
|
let minOffset = -1;
|
|
251
251
|
for (let i = 0; i < strings.length; i = i + 1) {
|
|
252
|
-
let flag = strings[i] === null;
|
|
253
252
|
if (!(strings[i] === null)) {
|
|
254
253
|
let resultOffset = str.indexOf(strings[i], offset);
|
|
255
254
|
if (resultOffset === -1) {
|
|
@@ -453,4 +452,4 @@ export class StrUtil {
|
|
|
453
452
|
}
|
|
454
453
|
}
|
|
455
454
|
StrUtil._paddingSpaces = null;
|
|
456
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9TdHJVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE1BQU0sY0FBYyxHQUFXLFFBQVEsQ0FBQztBQUN4QyxNQUFNLFVBQVUsR0FBVyxRQUFRLENBQUM7QUFDcEMsTUFBTSxXQUFXLEdBQVcsUUFBUSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFXLENBQUMsQ0FBQztBQUM3QixNQUFNLG1CQUFtQixHQUFXLFFBQVEsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVcsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBVyxDQUFDLENBQUM7QUFDcEMsTUFBTSxVQUFVLEdBQVcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxDQUFDLENBQUM7QUFFbkMsTUFBTSxPQUFPLE9BQU87SUFJbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN0QyxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDWCxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osT0FBTyxNQUFNLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDdEMsR0FBRyxH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Q0FBQyxFQUFDO1lBQzdCLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBRXBELEtBQUssSUFBSSxDQUFDLEdBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUM3QztnQkFDRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLENBQUMsRUFBRSxDQUFDO2FBQ0w7U0FDRjtRQUlELE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQzs7QUE3ckJjLHNCQUFjLEdBQVcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0LCBOU3RyaW5nLCBSZWZQYXJhbSwgU3RyaW5nQnVpbGRlciwgaXNOdWxsT3JVbmRlZmluZWR9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1V0aWxTdHJCeXRlTW9kZX0gZnJvbSBcIi4vVXRpbFN0ckJ5dGVNb2RlXCI7XHJcbmltcG9ydCB7UnRmfSBmcm9tIFwiLi9SdGZcIjtcclxuXHJcbmNvbnN0IEhUTUxfQkFDS1NMQVNIOiBzdHJpbmcgPSBcIiYjMDkyO1wiO1xyXG5jb25zdCBIVE1MX0NPTU1BOiBzdHJpbmcgPSBcIiYjMDQ0O1wiO1xyXG5jb25zdCBIVE1MX0hZUEhFTjogc3RyaW5nID0gXCImIzA0NTtcIjtcclxuY29uc3QgU1RSXzJfSFRNTDogbnVtYmVyID0gMTtcclxuY29uc3QgVEFTS19QQVRIX0RFTElNSVRFUjogc3RyaW5nID0gXCJAQHx8QEBcIjtcclxuZXhwb3J0IGNvbnN0IFNFUV8yX0hUTUw6IG51bWJlciA9IDI7XHJcbmV4cG9ydCBjb25zdCBIVE1MXzJfU1RSOiBudW1iZXIgPSAzO1xyXG5jb25zdCBIVE1MXzJfU0VROiBudW1iZXIgPSA0O1xyXG5leHBvcnQgY29uc3QgU0VRXzJfU1RSOiBudW1iZXIgPSA1O1xyXG5cclxuZXhwb3J0IGNsYXNzIFN0clV0aWwge1xyXG4gIHByaXZhdGUgc3RhdGljIF9wYWRkaW5nU3BhY2VzOiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IHRyaW0gdGhlIGVuZCBvZiB0aGUgc3RyaW5nPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBtZW1fdHJpbShzdHI6IHN0cmluZywgbGVuOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyO1xyXG4gICAgaWYgKGxlbiA+IDApIHtcclxuICAgICAgaWYgKGxlbiA+IHN0ci5sZW5ndGgpIHtcclxuICAgICAgICByZXN1bHQgPSAtMTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlIChsZW4gPiAwICYmIHN0cltsZW4gLSAxXSA9PT0gJyAnKSB7XHJcbiAgICAgICAgbGVuID0gbGVuIC0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmVzdWx0ID0gbGVuO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtZW1tb3ZlKGRlc3Q6IHN0cmluZywgZGVzdENvdW50OiBudW1iZXIsIHNyYzogc3RyaW5nLCBzcmNDb3VudDogbnVtYmVyLCBsZW46IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKGRlc3QubGVuZ3RoICsgbGVuKTtcclxuICAgIGlmIChVdGlsU3RyQnl0ZU1vZGUuaXNMb2NhbGVEZWZMYW5nSlBOKCkgJiYgZGVzdC5sZW5ndGggPCBkZXN0Q291bnQpIHtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoTlN0cmluZy5Gcm9tQ2hhcignICcsIGRlc3RDb3VudCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKGRlc3Quc3Vic3RyKDAsIGRlc3RDb3VudCkpO1xyXG4gICAgfVxyXG4gICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3JjLnN1YnN0cihzcmNDb3VudCwgbGVuKSk7XHJcblxyXG4gICAgaWYgKHN0cmluZ0J1aWxkZXIuTGVuZ3RoIDwgZGVzdC5sZW5ndGgpIHtcclxuICAgICAgICBzdHJpbmdCdWlsZGVyLkFwcGVuZChkZXN0LnN1YnN0cihzdHJpbmdCdWlsZGVyLkxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtZW1jcHkoZGVzdDogc3RyaW5nLCBkZXN0Q291bnQ6IG51bWJlciwgc3JjOiBzdHJpbmcsIHNjckNvdW50OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBzdHJpbmc7XHJcbiAgc3RhdGljIG1lbWNweShkZXN0OiBzdHJpbmdbXSwgZGVzdENvdW50OiBudW1iZXIsIHNyYzogc3RyaW5nW10sIHNyY0NvdW50OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkO1xyXG4gIHN0YXRpYyBtZW1jcHkoZGVzdDogYW55LCBkZXN0Q291bnQ6IG51bWJlciwgc3JjOiBhbnksIHNjckNvdW50T3JTcmNDb3VudDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA1ICYmIChkZXN0ID09PSBudWxsIHx8IGRlc3QuY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKGRlc3RDb3VudCA9PT0gbnVsbCB8fCBkZXN0Q291bnQuY29uc3RydWN0b3IgPT09IE51bWJlcikgJiYgKHNyYyA9PT0gbnVsbCB8fCBzcmMuY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKHNjckNvdW50T3JTcmNDb3VudCA9PT0gbnVsbCB8fCBzY3JDb3VudE9yU3JjQ291bnQuY29uc3RydWN0b3IgPT09IE51bWJlcikgJiYgKGNvdW50ID09PSBudWxsIHx8IGNvdW50LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKSB7XHJcbiAgICAgIHJldHVybiBTdHJVdGlsLm1lbWNweV8wKGRlc3QsIGRlc3RDb3VudCwgc3JjLCBzY3JDb3VudE9yU3JjQ291bnQsIGNvdW50KTtcclxuICAgIH1cclxuICAgIFN0clV0aWwubWVtY3B5XzEoZGVzdCwgZGVzdENvdW50LCBzcmMsIHNjckNvdW50T3JTcmNDb3VudCwgY291bnQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvcHkgcGFydCBvZiBzdHJpbmcgaW50byBhbm90aGVyIHN0cmluZywgbGlrZSBtZW1jcHkgb2YgQywgYnV0IDQgc3RyaW5nIG9ubHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVzdFwiPnN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZXN0Q291bnRcIj5vZiBjb3VudGVyIHN0YXJ0IGZyb20gaW4gZGVzdGlnbmF0aW9uIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzcmNcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic2NyQ291bnRcIj5vZiBjb3VudGVyIHN0YXJ0IGZyb20gaW4gc291cmNlIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb3VudFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBuZXcgdmFsdWUgb2YgZGVzdGlnbmF0aW9uIHN0cmluZzwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBtZW1jcHlfMChkZXN0OiBzdHJpbmcsIGRlc3RDb3VudDogbnVtYmVyLCBzcmM6IHN0cmluZywgc2NyQ291bnQ6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKGRlc3Quc3Vic3RyKDAsIGRlc3RDb3VudCkpO1xyXG5cclxuICAgIGlmIChzY3JDb3VudCArIGNvdW50IDwgc3JjLmxlbmd0aCkge1xyXG4gICAgICBzdHJpbmdCdWlsZGVyLkFwcGVuZChzcmMuc3Vic3RyKHNjckNvdW50LCBjb3VudCAtIHNjckNvdW50KSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3JjLnN1YnN0cihzY3JDb3VudCkpO1xyXG4gICAgfVxyXG4gICAgbGV0IHNpemU6IG51bWJlciA9IGRlc3QubGVuZ3RoIC0gZGVzdENvdW50IC0gY291bnQ7XHJcbiAgICBpZiAoc2l6ZSA+IDApIHtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoZGVzdC5zdWJzdHIoZGVzdENvdW50ICsgY291bnQpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBtZW1jcHlfMShkZXN0OiBzdHJpbmdbXSwgZGVzdENvdW50OiBudW1iZXIsIHNyYzogc3RyaW5nW10sIHNyY0NvdW50OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlIChjb3VudCA+IDAgJiYgZGVzdENvdW50IDwgZGVzdC5sZW5ndGggJiYgc3JjQ291bnQgPCBzcmMubGVuZ3RoKSB7XHJcbiAgICAgIGRlc3RbZGVzdENvdW50KytdID0gc3JjW3NyY0NvdW50KytdO1xyXG4gICAgICBjb3VudCA9IGNvdW50IC0gMTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRpYyBtZW1zZXQoZGVzdDogc3RyaW5nLCBkZXN0Q291bnQ6IG51bWJlciwgaW5WYWw6IHN0cmluZywgY291bnRlcjogbnVtYmVyKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBtZW1zZXQoZGVzdDogc3RyaW5nW10sIGRlc3RDb3VudDogbnVtYmVyLCBpblZhbDogc3RyaW5nLCBjb3VudGVyOiBudW1iZXIpOiB2b2lkO1xyXG4gIHN0YXRpYyBtZW1zZXQoZGVzdDogYW55LCBkZXN0Q291bnQ6IG51bWJlciwgaW5WYWw6IHN0cmluZywgY291bnRlcjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0ICYmIChkZXN0ID09PSBudWxsIHx8IGRlc3QuY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKGRlc3RDb3VudCA9PT0gbnVsbCB8fCBkZXN0Q291bnQuY29uc3RydWN0b3IgPT09IE51bWJlcikgJiYgKGluVmFsID09PSBudWxsIHx8IGluVmFsLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChjb3VudGVyID09PSBudWxsIHx8IGNvdW50ZXIuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIFN0clV0aWwubWVtc2V0XzAoZGVzdCwgZGVzdENvdW50LCBpblZhbCwgY291bnRlcik7XHJcbiAgICB9XHJcbiAgICBTdHJVdGlsLm1lbXNldF8xKGRlc3QsIGRlc3RDb3VudCwgaW5WYWwsIGNvdW50ZXIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluc2VydCB0byBzdHJpbmcgY2hhcnMgbiB0aW1lc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZXN0XCI+c3RyaW5nPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRlc3RDb3VudFwiPm9mIGNvdW50ZXIgc3RhcnQgZnJvbSBpbiBkZXN0aWduYXRpb24gc3RyaW5nIHRvIHN0YXJ0IGluc2VydGlvbiBvZiBjaGFyIGZyb208L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5WYWxcIj4yIGluc2VydDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb3VudGVyXCI+LSBudW1iZXIgb2YgdGltZXMgdG8gaW5zZXJ0IHRoZSBjaGFyPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG5ldyB2YWx1ZSBvZiBkZXN0aWduYXRpb24gc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgc3RhdGljIG1lbXNldF8wKGRlc3Q6IHN0cmluZywgZGVzdENvdW50OiBudW1iZXIsIGluVmFsOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgZmlyc3Q6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihkZXN0LnN1YnN0cigwLCBkZXN0Q291bnQpKTtcclxuICAgIHdoaWxlIChjb3VudGVyID4gMCkge1xyXG4gICAgICBmaXJzdC5BcHBlbmQoaW5WYWwpO1xyXG4gICAgICBjb3VudGVyID0gY291bnRlciAtIDE7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGZpcnN0Lkxlbmd0aCA8IGRlc3QubGVuZ3RoKSB7XHJcbiAgICAgIGZpcnN0LkFwcGVuZChkZXN0LnN1YnN0cihmaXJzdC5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaXJzdC5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbWVtc2V0XzEoZGVzdDogc3RyaW5nW10sIGRlc3RDb3VudDogbnVtYmVyLCBpblZhbDogc3RyaW5nLCBjb3VudGVyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlIChjb3VudGVyID4gMCAmJiBkZXN0Q291bnQgPCBkZXN0Lmxlbmd0aCkge1xyXG4gICAgICBkZXN0W2Rlc3RDb3VudCsrXSA9IGluVmFsO1xyXG4gICAgICBjb3VudGVyID0gY291bnRlciAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc3Ryc3RyKHN0cjogc3RyaW5nLCBzdWJzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZnJvbTogbnVtYmVyID0gc3RyLmluZGV4T2Yoc3Vic3RyKTtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChmcm9tIDwgMCkge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IHN0ci5zdWJzdHIoZnJvbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXZlcnNlcyBzdHJpbmcgdmFsdWVzLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFwiPlRoZSBTdHJpbmdCdWlsZGVyIG9iamVjdCBjb250YWluaW5nIHRoZSBzdHJpbmcgdG8gYmUgcmV2ZXJzZWQuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+VGhlIHJldmVyc2VkIHN0cmluZyBjb250YWluZWQgaW4gYSBTdHJpbmdCdWlsZGVyIG9iamVjdC48L3JldHVybnM+XHJcbiAgc3RhdGljIFJldmVyc2VTdHJpbmcodGV4dDogU3RyaW5nQnVpbGRlcik6IFN0cmluZ0J1aWxkZXIge1xyXG4gICAgLy8gVE9ETzogdXNlIHN0cmluZy5SZXZlcnNlKClcclxuICAgIGxldCBhcnJheTogc3RyaW5nW10gPSBOU3RyaW5nLlRvQ2hhckFycmF5KHRleHQuVG9TdHJpbmcoKSk7XHJcbiAgICBhcnJheS5yZXZlcnNlKCk7XHJcbiAgICByZXR1cm4gbmV3IFN0cmluZ0J1aWxkZXIoTlN0cmluZy5Gcm9tQ2hhcnMoYXJyYXkpKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVtb3ZlIHNwYWNlcyBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHN0cmluZzwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIHRvIHRyaW1cclxuICAvLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgcnRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFN0clV0aWwucnRyaW1XaXRoTnVsbChzdHIsIGZhbHNlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVtb3ZlIHNwYWNlcyBhbmQvb3IgTnVsbCBjaGFycyBmcm9tIHRoZSByaWdodCBzaWRlIG9mIHN0cmluZzwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIHRvIHRyaW1cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0cmltTnVsbENoYXJzXCI+V2hldGhlciB0byByZW1vdmUgTlVMTCBjaGFyYWN0ZXJzIG9yIG5vdFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHN0YXRpYyBydHJpbVdpdGhOdWxsKHN0cjogc3RyaW5nLCB0cmltTnVsbENoYXJzOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmICh0eXBlb2Ygc3RyID09PSBcInVuZGVmaW5lZFwiIHx8IHN0ciA9PT0gbnVsbCB8fCBzdHIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgaWR4OiBudW1iZXIgPSBzdHIubGVuZ3RoIC0gMTtcclxuICAgICAgaWYgKHRyaW1OdWxsQ2hhcnMpIHtcclxuXHJcbiAgICAgICAgd2hpbGUgKGlkeCA+PSAwICYmIChzdHJbaWR4XSA9PT0gJyAnIHx8IHN0cltpZHhdID09PSBTdHJpbmcuZnJvbUNoYXJDb2RlKDApLyonXHUwMDAwJyovKSkge1xyXG4gICAgICAgICAgaWR4ID0gaWR4IC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgd2hpbGUgKGlkeCA+PSAwICYmIHN0cltpZHhdID09PSAnICcpIHtcclxuICAgICAgICAgIGlkeCA9IGlkeCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlkeCA9IGlkeCArIDE7XHJcblxyXG4gICAgICBpZiAoaWR4IDwgc3RyLmxlbmd0aCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHN0ci5zdWJzdHIoMCwgaWR4KTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBzdHI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlbW92ZSBzcGFjZXMgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIHN0cmluZzwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgc3RyaW5nIHRvIHRyaW1cclxuICAvLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgbHRyaW0oc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxlbmd0aDogbnVtYmVyID0gc3RyLmxlbmd0aDtcclxuICAgIGxldCBpOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xyXG4gICAgaWYgKHN0ciA9PT0gbnVsbCB8fCBsZW5ndGggPT09IDApIHtcclxuICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHdoaWxlIChpIDwgbGVuZ3RoICYmIHN0cltpXSA9PT0gJyAnLyonICcqLykge1xyXG4gICAgICAgIGkgPSBpICsgMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGkgPiAwKSB7XHJcbiAgICAgICAgc3RyID0gc3RyLnN1YnN0cihpKTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQgPSBzdHI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlRoaXMgZnVuY3Rpb24gZm9yIERlbGV0aW5nIFN0cmluZyBmcm9tIGVuZCAmIHN0YXJ0IG9mIGlucHV0XHJcbiAgLy8vIFN0cmluZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+U3RyaW5nICwgd2hpY2ggY2FuIGluY2x1ZGUgc3RyVG9EZWxldGUgc3BhY2VzIG9uIGlucHV0XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVG9EZWxldGVcIj5uZWVkIGRlbGV0ZSB0aGlzIFN0cmluZyBmcm9tIHN0YXJ0L2VuZCBvZiBzdHIuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBTdHJpbmcgd2l0aG91dCBzdHJUb0RlbGV0ZSBvbiBlbmQgJiBzdGFydCxcclxuICAvLy8gb3IgJ251bGwnIGlmIFN0aW5nIGhhc24ndCBub3QgIGNoYXJhY3RlcnMgaW5zaWRlXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgRGVsZXRlU3RyaW5nc0Zyb21FbmRzKHN0cjogc3RyaW5nLCBzdHJUb0RlbGV0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmIChzdHIuc3RhcnRzV2l0aChzdHJUb0RlbGV0ZSkpIHtcclxuICAgICAgc3RyID0gc3RyLnN1YnN0cihzdHJUb0RlbGV0ZS5sZW5ndGgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0ci5lbmRzV2l0aChzdHJUb0RlbGV0ZSkpIHtcclxuICAgICAgc3RyID0gc3RyLnN1YnN0cigwLCBzdHIubGVuZ3RoIC0gc3RyVG9EZWxldGUubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcGFkIGEgc3RyaW5nIHdpdGggdHJhaWxpbmcgc3BhY2VzIHVwIHRvIHRoZSBnaXZlbiBsZW5ndGg8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyB0byBwYWRcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW5cIj50aGUgZXhwZWN0ZWQgbGVuZ3RoIGFmdGVyIHBhZGRpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgcGFkU3RyKHN0cjogc3RyaW5nLCBsZW46IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgcGFkTGVuOiBudW1iZXIgPSBsZW4gLSBzdHIubGVuZ3RoO1xyXG5cclxuICAgIGlmIChwYWRMZW4gPiAwKSB7XHJcbiAgICAgIGlmIChTdHJVdGlsLl9wYWRkaW5nU3BhY2VzID09PSBudWxsIHx8IFN0clV0aWwuX3BhZGRpbmdTcGFjZXMubGVuZ3RoIDwgcGFkTGVuKSB7XHJcbiAgICAgICAgU3RyVXRpbC5fcGFkZGluZ1NwYWNlcyA9IE5TdHJpbmcuRnJvbUNoYXIoJyAnLCBwYWRMZW4pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBzdHJpbmdCdWlsZGVyOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIobGVuKTtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3RyKTtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoU3RyVXRpbC5fcGFkZGluZ1NwYWNlcywgMCwgcGFkTGVuKTtcclxuICAgICAgc3RyID0gc3RyaW5nQnVpbGRlci5Ub1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdGhpcyBtZXRob2Qgd2lsbCBzZXJ2ZSBhcyBhIHN0cmluZyB0b2tlbml6ZXIgaW5zdGVhZCBvZiB1c2luZyB0aGUgYyMgc3BsaXQgbWV0aG9kXHJcbiAgLy8vIHNpbmNlIHRoZXJlIGFyZSBkaWZmcmVuY2VzIGJ0d2VlbiBqYXZhIHRva2VuaXplciBhbmQgYyMgc3BsaXRcclxuICAvLy8gdGhlIGltcGxpbWVudGF0aW9uIGdpdmVuIGJ5IHRoZSBjb252ZXJzaW9uIHRvb2wgaXMgbm90IFN1ZmZpY2llbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvdXJjZVwiPi0gdGhlIHNvdXJjZSBzdHJpbmcgdG8gYmUgY29udmVydGVkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGVsaW1cIj4tIHRoZSBzdHJpbmcgb2YgZGVsaW1pdGVycyB1c2VkIHRvIHNwbGl0IHRoZSBzdHJpbmcgKGVhY2ggY2hhcmFjdGVyIGluIHRoZSBTdHJpbmcgaXMgYSBkZWxpbWl0ZXJcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGFycmF5IG9mIHRva2VuIGFjY29yZGluZyB3aGljaCBpcyB0aGUgc2FtZSBhcyBzdHJpbmcgdG9rZW5pemVyIGluIGphdmFcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyB0b2tlbml6ZShzb3VyY2U6IHN0cmluZywgZGVsaW06IHN0cmluZ3xSZWdFeHApOiBzdHJpbmdbXSB7XHJcbiAgICAvLyBJdCBpcyBtZW50aW9uZWQgaW4gdGhlIGNvbW1lbnQgdGhhdCB3ZSBzaG91bGQgbm90IHVzZSBTdHJpbmcuU3BsaXQoKVxyXG4gICAgLy8gYmVjYXVzZSBpdHMgYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gSmF2YSdzIHRva2VuaXplci5cclxuICAgIC8vIFNvLCB3ZSB3ZXJlIHN1cHBvc2UgdG8gdXNlIG91ciBvd24gaW1wbGVtZW50YXRpb24gKHRoZSBjb21tZW50ZWQgY29kZSBiZWxvdykuXHJcbiAgICAvLyBCdXQgYWxsIHRoZXNlIHllYXJzLCB3ZSB3ZXJlIGNhbGxpbmcgWG1sUGFyc2VyLmdldFRva2VuKCkgd2hpY2ggd2FzIGFjdHVhbGx5XHJcbiAgICAvLyB1c2luZyBTdHJpbmcuU3BsaXQoKS4gQW5kIHdlIGRpZG4ndCBmYWNlIGFueSBwcm9ibGVtLlxyXG4gICAgLy8gU28sIGl0IHNlZW1zIHRoYXQgd2UgZG8gbm90IGhhdmUgcHJvYmxlbSBpbiB1c2luZyBTdHJpbmcuU3BsaXQoKS5cclxuICAgIC8vIEJ1dCBub3csIHdlIGNhbiBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBoZXJlLi4uXHJcbiAgICAvLyBYbWxQYXJzZXIuZ2V0VG9rZW5zKCkgd2FzIGdldHRpbmcgYSBTdHJpbmdbXSB1c2luZyBTdHJpbmcuU3BsaXQoKS5cclxuICAgIC8vIEl0IHdhcyB0aGVuIGNyZWF0aW5nIGEgTGlzdDxTdHJpbmc+IGZyb20gdGhpcyBTdHJpbmdbXSBhbmQgd2FzIHJldHVybmluZyBpdCB0b1xyXG4gICAgLy8gdG9rZW5pemUoKS5cclxuICAgIC8vIHRva2VuaXplKCkgd2FzIGFnYWluIGNvbnZlcnRpbmcgdGhpcyBMaXN0PFN0cmluZz4gYmFjayB0byBTdHJpbmdbXS5cclxuICAgIC8vIFNvIHdoeSBub3QgY2FsbCBTdHJpbmcuU3BsaXQoKSBkaXJlY3RseT9cclxuICAgIHJldHVybiBzb3VyY2Uuc3BsaXQoZGVsaW0pO1xyXG4gICAgLypcclxuU3RyaW5nIFtdIHRva2VucyA9IG51bGw7XHJcblxyXG5jaGFyIFtdIGRlbGltQXJyeSA9IGRlbGltLnRvQ2hhckFycmF5KCk7XHJcblxyXG4vL3NpbmNlIGphdmEgZGlzY2FyZHMgZGVsaW1pdGVycyBmcm9tIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBzdHJpbmcgYW5kIGMjIGRvZXMgbm90XHJcbi8vd2UgbmVlZCB0byByZW1vdmUgdGhlbSBtYW51YWxseVxyXG4vLyAgICAgICBzb3VyY2UgPSBzb3VyY2UuVHJpbUVuZChkZWxpbUFycnkpO1xyXG4vLyAgICAgc291cmNlID0gc291cmNlLlRyaW1TdGFydChkZWxpbUFycnkpO1xyXG5zb3VyY2UgPSBzb3VyY2UudHJpbSgpO1xyXG5cclxuLy9ub3cgdGhhdCB3ZSBoYXZlIHJlbW92ZSBzdGFydGluZyBhbmQgZW5kaW5nIGRlbGltaXRlcnMgd2UgY2FuIHNwbGl0XHJcbnRva2VucyA9IHNvdXJjZS5TcGxpdChkZWxpbUFycnkpO1xyXG5cclxuLypcclxuKiBvbmx5IG9uZSBwcm9ibGVtOiBpZiB3ZSBoYXZlIHR3byBTdWJzZXF1ZW50IGRlbGltaXRlcnMgZm9yIGV4YW1wbGUgOlxyXG4qIHRoZSBkZWxpbWl0ZXIgaXMgJzsnIGFuZCB0aGUgc3RyaW5nIGlzOiBcImZpcnN0OztzZWNvbmQ7dGhpcmRcIlxyXG4qIHRoZW4gaW4gamF2YSBTdHJpbmcgdG9rZW5pemVyIHdpbGwgZ2l2ZSB1cyBvbmx5IDMgdG9rZW5zIDpmaXJzdCxzZWNvbmQgYW5kIHRoaXJkXHJcbiogd2hpbGUgaXMgYyMgc3BsaXQgd2V0aG9kIHdpbGwgcmV0dXJuIDQgdG9rZW5zOiBmaXJzdCxlbXB0eSBzdHJpbmcsc2Vjb25kIGFuZCB0aGlyZFxyXG4qIHdlIG5lZWQgdG8gZGVhbCB3aXRoIHRoYXRcclxuKi9cclxuICAgIC8qXHJcbiAgICBMaXN0IHJlcyAgPSBuZXcgTGlzdCgpO1xyXG4gICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKVxyXG4gICAge1xyXG4gICAgaWYgKHRva2Vuc1tpXSAhPSBcIlwiIClcclxuICAgIHJlcy5hZGRJdGVtKHRva2Vuc1tpXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIChTdHJpbmcgW10pKHJlcy5nZXRBbGxJdGVtcyAoU3RyaW5nLmNsYXNzKSk7Ki9cclxuXHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRyYW5zbGF0ZSBmcm9tIHN0cmluZyB0byBoZXhhIGR1bXAgY2hhciBieSBjaGFyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0cmluZ1wiPnRvIHRyYW5zbGF0ZSBpdCB0byB0aGUgYnl0ZSBzdHJlYW08L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWluTGVuZ3RoXCI+dGhlIG1pbmltYWwgbGVuZ3RoIG9mIGhleGEgZGlnaXRzIGZvciBlYWNoIGNoYXI8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGJ5dGUgc3RyZWFtIGluIGZvcm0gb2Ygc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBzdHJpbmdUb0hleGFEdW1wKHN0cjogc3RyaW5nLCBtaW5MZW5ndGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0ci5sZW5ndGggKiBtaW5MZW5ndGgpO1xyXG4gICAgZm9yIChsZXQgaW5keDogbnVtYmVyID0gMDsgaW5keCA8IHN0ci5sZW5ndGg7IGluZHggPSBpbmR4ICsgMSkge1xyXG4gICAgICBsZXQgY3VyckludDogbnVtYmVyID0gc3RyLmNoYXJDb2RlQXQoaW5keCk7XHJcbiAgICAgIGxldCBoZXhTdHI6IHN0cmluZyA9IGN1cnJJbnQudG9TdHJpbmcoMTYpO1xyXG4gICAgICB3aGlsZSAoaGV4U3RyLmxlbmd0aCA8IG1pbkxlbmd0aCkge1xyXG4gICAgICAgIGhleFN0ciA9IFwiMFwiICsgaGV4U3RyO1xyXG4gICAgICB9XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKGhleFN0cik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyaW5nQnVpbGRlci5Ub1N0cmluZygpLnRvVXBwZXJDYXNlKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc2VhcmNoQW5kUmVwbGFjZShzdHI6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBzZWFyY2hBbmRSZXBsYWNlKHN0cjogc3RyaW5nLCBmcm9tOiBzdHJpbmdbXSwgdG86IHN0cmluZ1tdKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBzZWFyY2hBbmRSZXBsYWNlKHN0cjogc3RyaW5nLCBmcm9tOiBhbnksIHRvOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHN0ciA9PT0gbnVsbCB8fCBzdHIuY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKGZyb20gPT09IG51bGwgfHwgZnJvbS5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSAmJiAodG8gPT09IG51bGwgfHwgdG8uY29uc3RydWN0b3IgPT09IFN0cmluZykpIHtcclxuICAgICAgcmV0dXJuIFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZV8wKHN0ciwgZnJvbSwgdG8pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZV8xKHN0ciwgZnJvbSwgdG8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZXBsYWNlIGV2ZXJ5IGFwcGVhcmFuY2Ugb2YgJ2Zyb20nIGluICdzdHInIHdpdGggJ3RvJzwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgd29ya2luZyBiYXNlIHNvdXJjZSBzdHJpbmcgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tXCI+dGhlIHN0cmluZyB0byByZXBsYWNlIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidG9cIj50aGUgc3RyaW5nIHVzZSBpbnN0ZWFkICdmcm9tJyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbW9kaWZpZWQgU3RyaW5nIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBzZWFyY2hBbmRSZXBsYWNlXzAoc3RyOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFzdFN1YlN0cjogbnVtYmVyID0gMDtcclxuICAgIGxldCBzdGFydFN1YlN0cjogbnVtYmVyO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xyXG5cclxuICAgIGlmICgoc3RhcnRTdWJTdHIgPSBzdHIuaW5kZXhPZihmcm9tKSkgPT09IC0xKSB7XHJcbiAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0ci5sZW5ndGgpO1xyXG4gICAgICB3aGlsZSAoc3RhcnRTdWJTdHIgIT09IC0xKSB7XHJcbiAgICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3RyLnN1YnN0cihsYXN0U3ViU3RyLCBzdGFydFN1YlN0ciAtIGxhc3RTdWJTdHIpICsgdG8pO1xyXG4gICAgICAgIHN0YXJ0U3ViU3RyID0gc3RhcnRTdWJTdHIgKyBmcm9tLmxlbmd0aDtcclxuICAgICAgICBsYXN0U3ViU3RyID0gc3RhcnRTdWJTdHI7XHJcbiAgICAgICAgc3RhcnRTdWJTdHIgPSBzdHIuaW5kZXhPZihmcm9tLCBsYXN0U3ViU3RyKTtcclxuICAgICAgfVxyXG4gICAgICBzdHJpbmdCdWlsZGVyLkFwcGVuZChzdHIuc3Vic3RyKGxhc3RTdWJTdHIpKTtcclxuICAgICAgcmVzdWx0ID0gc3RyaW5nQnVpbGRlci5Ub1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVwbGFjZSBldmVyeSBhcHBlYXJhbmNlIG9mIHN0cmluZ3Mgb2YgJ2Zyb20nIGluICdzdHInIHdpdGggdGhlIGFjY29yZGluZyBzdHJpbmcgaW4gJ3RvJzwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJcIj50aGUgd29ya2luZyBiYXNlIHNvdXJjZSBzdHJpbmcgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tXCI+dGhlIHN0cmluZyB0byByZXBsYWNlIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidG9cIj50aGUgc3RyaW5nIHVzZSBpbnN0ZWFkICdmcm9tJyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbW9kaWZpZWQgU3RyaW5nIDwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBzZWFyY2hBbmRSZXBsYWNlXzEoc3RyOiBzdHJpbmcsIGZyb206IHN0cmluZ1tdLCB0bzogc3RyaW5nW10pOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhc3RTdWJTdHI6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgc2FySW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgZnJvbUNvcHk6IHN0cmluZ1tdID0gZnJvbS5zbGljZSgpO1xyXG4gICAgbGV0IHN0YXJ0U3ViU3RyOiBudW1iZXI7XHJcbiAgICBsZXQgU0FSaW5kZXg6IFJlZlBhcmFtPG51bWJlcj4gPSBuZXcgUmVmUGFyYW0oMCk7XHJcbiAgICBzdGFydFN1YlN0ciA9IFN0clV0aWwuaW5kZXhPZihzdHIsIGZyb21Db3B5LCBsYXN0U3ViU3RyLCBTQVJpbmRleCk7XHJcbiAgICBzYXJJbmRleCA9IFNBUmluZGV4LnZhbHVlO1xyXG4gICAgaWYgKHN0YXJ0U3ViU3RyID09PSAtMSlcclxuICAgICAgcmV0dXJuIHN0cjtcclxuXHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBsZXQgdG1wQnVmOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoc3RyLmxlbmd0aCk7XHJcbiAgICB3aGlsZSAoc3RhcnRTdWJTdHIgIT09IC0xKSB7XHJcbiAgICAgIHRtcEJ1Zi5BcHBlbmQoc3RyLnN1YnN0cihsYXN0U3ViU3RyLCBzdGFydFN1YlN0ciAtIGxhc3RTdWJTdHIpICsgdG9bc2FySW5kZXhdKTtcclxuICAgICAgc3RhcnRTdWJTdHIgKz0gZnJvbUNvcHlbc2FySW5kZXhdLmxlbmd0aDtcclxuICAgICAgbGFzdFN1YlN0ciA9IHN0YXJ0U3ViU3RyO1xyXG4gICAgICBzdGFydFN1YlN0ciA9IFN0clV0aWwuaW5kZXhPZihzdHIsIGZyb21Db3B5LCBsYXN0U3ViU3RyLCBTQVJpbmRleCk7XHJcbiAgICAgIHNhckluZGV4ID0gU0FSaW5kZXgudmFsdWU7XHJcbiAgICAgIH07XHJcbiAgICB0bXBCdWYuQXBwZW5kKHN0ci5zdWJzdHIobGFzdFN1YlN0cikpO1xyXG4gICAgcmVzdWx0ID0gdG1wQnVmLlRvU3RyaW5nKCk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gdGhpcyBmdW5jdGlvbnMgaXMgZm9yIHVzZSBieSB0aGUgc2VhcmNoQW5kUmVwbGFjZSgpIGZ1bmN0aW9uIC1cclxuICAvLy8gc2VhcmNoZXMgdGhlIG9mZnNldCBvZiB0aGUgc3RyaW5ncyBmcm9tIHRoZSBhcnJheSBpbiB0aGUgZ2l2ZW4gc3RyaW5nXHJcbiAgLy8vIGFuZCByZXR1cm5zIHRoZSBtaW5pbXVtIG9mZnNldCBmb3VuZCBhbmQgc2V0cyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIHN0cmluZ1xyXG4gIC8vLyB0byBTQVJpbmRleFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyB0byBzZWFyY2ggaW4gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJpbmdzXCI+YW4gYXJyYXkgb2Ygc3RyaW5ncyB0byBzZWFyY2ggZm9yIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2Zmc2V0XCI+d2hlcmUgdG8gc3RhcnQgdGhlIHNlYXJjaCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIGluZGV4T2Yoc3RyOiBzdHJpbmcsIHN0cmluZ3M6IHN0cmluZ1tdLCBvZmZzZXQ6IG51bWJlciwgU0FSaW5kZXg6IFJlZlBhcmFtPG51bWJlcj4pOiBudW1iZXIge1xyXG4gICAgbGV0IG1pbk9mZnNldDogbnVtYmVyID0gLTE7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgZmxhZzogYm9vbGVhbiA9IHN0cmluZ3NbaV0gPT09IG51bGw7XHJcbiAgICAgIGlmICghKHN0cmluZ3NbaV0gPT09IG51bGwpKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdE9mZnNldDogbnVtYmVyID0gc3RyLmluZGV4T2Yoc3RyaW5nc1tpXSwgb2Zmc2V0KTtcclxuXHJcbiAgICAgICAgaWYgKHJlc3VsdE9mZnNldCA9PT0gLTEpIHtcclxuICAgICAgICAgIHN0cmluZ3NbaV0gPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChyZXN1bHRPZmZzZXQgPCBtaW5PZmZzZXQgfHwgbWluT2Zmc2V0ID09PSAtMSkge1xyXG4gICAgICAgICAgICBtaW5PZmZzZXQgPSByZXN1bHRPZmZzZXQ7XHJcbiAgICAgICAgICAgIFNBUmluZGV4LnZhbHVlID0gaTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVzdWx0OiBudW1iZXI7XHJcbiAgICBpZiAobWluT2Zmc2V0ID4gLTEpIHtcclxuICAgICAgcmVzdWx0ID0gbWluT2Zmc2V0O1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIFNBUmluZGV4LnZhbHVlID0gLTE7XHJcbiAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVwbGFjZSB0b2tlbnMgaW4gdXNlciBzdHJpbmcgYnkgdmVjdG9yIHZhbHVlcyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidXNlclN0cmluZ1wiPi0gdXNlciBidWZmZXIgbGlrZSBcIlVzZXIgJWQsICVkIHN0cmluZ1wiXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidG9rZW5cIj4tIHRva2VuIHVzZWQgaW4gdXNlciBzdHJpbmcgLSBpLmUuIFwiJWRcIlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9jY3VycmVuY2VcIj4tIG51bWJlciBvZiB0b2tlbiB3aGVyZSByZXBsYWNlIHdpbGwgdGFrZSBwYXJ0ICgxIGZvciBmaXJzdCBvY2N1cnJlbmNlKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbHVlXCI+LSB2YWx1ZSB0byBiZSBpbnNlcnRlZCBpbnN0ZWQgb2YgdG9rZW5cclxuICAvLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgcmVwbGFjZVN0cmluZ1Rva2Vucyh1c2VyU3RyaW5nOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIG9jY3VycmVuY2U6IG51bWJlciwgdmFsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRva2VuTGVuOiBudW1iZXIgPSB0b2tlbi5sZW5ndGg7XHJcbiAgICBsZXQgY3VyclBvc2l0aW9uOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IG5ld1N0cmluZzogc3RyaW5nID0gdXNlclN0cmluZztcclxuXHJcbiAgICBpZiAodmFsICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBudW0yOiBudW1iZXIgPSAwO1xyXG4gICAgICB3aGlsZSAobnVtMiA8IG9jY3VycmVuY2UgJiYgY3VyclBvc2l0aW9uICE9PSAtMSkge1xyXG4gICAgICAgIGN1cnJQb3NpdGlvbiA9IHVzZXJTdHJpbmcuaW5kZXhPZih0b2tlbiwgY3VyclBvc2l0aW9uICsgKChudW0yID09PSAwKSA/IDAgOiB0b2tlbkxlbikpO1xyXG4gICAgICAgIG51bTIgPSBudW0yICsgMTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGN1cnJQb3NpdGlvbiAhPT0gLTEpIHtcclxuICAgICAgICBuZXdTdHJpbmcgPSB1c2VyU3RyaW5nLnN1YnN0cigwLCBjdXJyUG9zaXRpb24pICsgdmFsICsgdXNlclN0cmluZy5zdWJzdHIoY3VyclBvc2l0aW9uICsgdG9rZW5MZW4sIHVzZXJTdHJpbmcubGVuZ3RoIC0gKGN1cnJQb3NpdGlvbiArIHRva2VuTGVuKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdTdHJpbmc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWFrZVByaW50YWJsZVRva2Vucyhzb3VyY2U6IHN0cmluZywgdHlwZTogc3RyaW5nKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBtYWtlUHJpbnRhYmxlVG9rZW5zKHNvdXJjZTogc3RyaW5nLCB0eXBlOiBudW1iZXIpOiBzdHJpbmc7XHJcbiAgc3RhdGljIG1ha2VQcmludGFibGVUb2tlbnMoc291cmNlOiBMaXN0PHN0cmluZz4sIHR5cGU6IG51bWJlcik6IHN0cmluZztcclxuICBzdGF0aWMgbWFrZVByaW50YWJsZVRva2Vucyhzb3VyY2U6IGFueSwgdHlwZTogYW55KTogc3RyaW5nIHwgdm9pZHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmIChzb3VyY2UgPT09IG51bGwgfHwgc291cmNlLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpICYmICh0eXBlID09PSBudWxsIHx8IHR5cGUuY29uc3RydWN0b3IgPT09IE51bWJlcikpIHtcclxuICAgICAgcmV0dXJuIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vuc18wKHNvdXJjZSwgdHlwZSk7XHJcbiAgICB9XHJcbiAgICBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnNfMShzb3VyY2UsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnZlcnRzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHRva2VuIHRvIGEgcHJpbnRhYmxlIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzb3VyY2VcIj5hIHRva2VuIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlXCI+dHlwZSBvZiBjb252ZXJzaW9uOiBTVFJfMl9IVE1MLCBTRVFfMl9IVE1MLCBIVE1MXzJfU0VRLCBIVE1MXzJfU1RSLCBTRVFfMl9TVFIgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRva2VuIHdpdGggY29udmVydGVkIHNwZWNpYWwgY2hhcmFjdGVycyA8L3JldHVybnM+XHJcbiAgc3RhdGljIG1ha2VQcmludGFibGVUb2tlbnNfMChzb3VyY2U6IHN0cmluZywgdHlwZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBlc2NTdHI6IHN0cmluZ1tdID0gW1xyXG4gICAgICBcIlxcXFxcIiwgXCItXCIsIFwiLFwiXHJcbiAgICBdO1xyXG4gICAgbGV0IGVzY1NlcTogc3RyaW5nW10gPSBbXHJcbiAgICAgIFwiXFxcXFxcXFxcIiwgXCJcXFxcLVwiLCBcIlxcXFwsXCJcclxuICAgIF07XHJcbiAgICBsZXQgZXNjSHRtOiBzdHJpbmdbXSA9IFtcclxuICAgICAgSFRNTF9CQUNLU0xBU0gsIEhUTUxfSFlQSEVOLCBIVE1MX0NPTU1BXHJcbiAgICBdO1xyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgU1RSXzJfSFRNTDpcclxuICAgICAgICByZXN1bHQgPSBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBlc2NTdHIsIGVzY0h0bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU0VRXzJfSFRNTDpcclxuICAgICAgICByZXN1bHQgPSBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBlc2NTZXEsIGVzY0h0bSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSFRNTF8yX1NFUTpcclxuICAgICAgICByZXN1bHQgPSBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBlc2NIdG0sIGVzY1NlcSk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgSFRNTF8yX1NUUjpcclxuICAgICAgICByZXN1bHQgPSBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBlc2NIdG0sIGVzY1N0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU0VRXzJfU1RSOlxyXG4gICAgICAgIHJlc3VsdCA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIGVzY1NlcSwgZXNjU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXN1bHQgPSBzb3VyY2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb252ZXJ0cyBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYSB0b2tlbnMgY29sbGVjdGlvbiB0byBhIHByaW50YWJsZSBmb3JtYXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic291cmNlXCI+dmVjdG9yIG9mIHN0cmluZ3MgYmVmb3JlIHRva2VuYWl6ZXIgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGVcIj50eXBlIG9mIGNvbnZlcnNpb246IFNUUl8yX0hUTUwsIFNFUV8yX0hUTUwsIEhUTUxfMl9TRVEsIEhUTUxfMl9TVFIgPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBtYWtlUHJpbnRhYmxlVG9rZW5zXzEoc291cmNlOiBMaXN0PHN0cmluZz4sIHR5cGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHNvdXJjZSAhPT0gbnVsbCkge1xyXG4gICAgICBsZXQgbGVuZ3RoOiBudW1iZXIgPSBzb3VyY2UubGVuZ3RoO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBsZXQgY3VyckVsbTogc3RyaW5nID0gc291cmNlLmdldF9JdGVtKGkpO1xyXG4gICAgICAgIHNvdXJjZS5zZXRfSXRlbShpLCBTdHJVdGlsLm1ha2VQcmludGFibGVUb2tlbnNfMChjdXJyRWxtLCB0eXBlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGFuZ2Ugbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIGxpa2UgXCJuZXcgbGluZVwiIGFuZCBcImxpbmUgZmVlZFwiIHRvIHRoZWlyXHJcbiAgLy8vICAgcHJpbnRhYmxlIHJlcHJlc2VudGF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNvdXJjZVwiPmlzIHRoZSBzdHJpbmcgd2l0aCBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBuZXcgc3RyaW5nIHdoZXJlIGFsbCB0aGUgbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZSBjb252ZXJ0ZWQgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBtYWtlUHJpbnRhYmxlKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBmcm9tOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJcXG5cIiwgXCJcXHJcIiwgXCInXCIsIFwiXFxcXFwiLCBcIlxcXCJcIiwgXCJcXDBcIlxyXG4gICAgXTtcclxuICAgIGxldCB0bzogc3RyaW5nW10gPSBbXHJcbiAgICAgIFwiXFxcXG5cIiwgXCJcXFxcclwiLCBcIlxcXFwnXCIsIFwiXFxcXFxcXFxcIiwgXCJcXFxcXFxcIlwiLCBcIlxcXFwwXCJcclxuICAgIF07XHJcbiAgICByZXR1cm4gU3RyVXRpbC5zZWFyY2hBbmRSZXBsYWNlKHNvdXJjZSwgZnJvbSwgdG8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNoYW5nZSBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMgbGlrZSBcIm5ldyBsaW5lXCIgYW5kIFwibGluZSBmZWVkXCIgdG8gdGhlaXJcclxuICAvLy8gICBwcmludGFibGUgcmVwcmVzZW50YXRpb24gKHNpbXBsaWZpZWQgdmVyc2lvbiBmb3IgcmFuZ2UgZXJyb3IgbWVzc2FnZSlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic291cmNlXCI+aXMgdGhlIHN0cmluZyB3aXRoIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIG5ldyBzdHJpbmcgd2hlcmUgYWxsIHRoZSBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIGNvbnZlcnRlZCA8L3JldHVybnM+XHJcbiAgc3RhdGljIG1ha2VQcmludGFibGUyKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBmcm9tOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJcXG5cIiwgXCJcXHJcIiwgXCJcXDBcIlxyXG4gICAgXTtcclxuICAgIGxldCB0bzogc3RyaW5nW10gPSBbXHJcbiAgICAgIFwiXFxcXG5cIiwgXCJcXFxcclwiLCBcIlxcXFwwXCJcclxuICAgIF07XHJcbiAgICByZXR1cm4gU3RyVXRpbC5zZWFyY2hBbmRSZXBsYWNlKHNvdXJjZSwgZnJvbSwgdG8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBac3RyaW5nTWFrZShzOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxlbiA9IFN0clV0aWwubWVtX3RyaW0ocywgbGVuKTtcclxuICAgIHJldHVybiBzLnN1YnN0cigwLCBsZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PihwdWJsaWMpXHJcbiAgLy8vIHJldHVybnMgcGxhaW4gdGV4dCBmcm9tIHJ0ZiB0ZXh0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJydGZUZXh0XCI+cmVmZXIgdG8gdGhlIHN1bW1hcnk8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5yZWZlciB0byB0aGUgc3VtbWFyeTwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0UGxhaW5UZXh0ZnJvbVJ0ZihydGZUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKFJ0Zi5pc1J0ZihydGZUZXh0KSkge1xyXG4gICAgICBsZXQgcnRmOiBSdGYgPSBuZXcgUnRmKCk7XHJcbiAgICAgIGxldCBvdXRwdXRUeHQ6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihcIlwiKTtcclxuICAgICAgcnRmLnRvVHh0KHJ0ZlRleHQsIG91dHB1dFR4dCk7XHJcbiAgICAgIHJ0ZlRleHQgPSBvdXRwdXRUeHQuVG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBydGZUZXh0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmluZyBhcnJheXMgc3RyMSAmIHN0cjIgYXJlIGVxdWFsXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHIxXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHIyXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTdHJpbmdzQXJyYXlzRXF1YWwoc3RyMTogc3RyaW5nW10sIHN0cjI6IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xyXG4gICAgaWYgKHN0cjEgPT09IG51bGwgJiYgc3RyMiA9PT0gbnVsbCkge1xyXG4gICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChzdHIxID09PSBudWxsIHx8IHN0cjIgPT09IG51bGwpIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBpZiAoc3RyMS5sZW5ndGggIT09IHN0cjIubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpbmRleDogbnVtYmVyID0gMDsgaW5kZXggPCA8bnVtYmVyPnN0cjEubGVuZ3RoOyBpbmRleCA9IGluZGV4ICsgMSkge1xyXG4gICAgICAgICAgICBpZiAoKHN0cjFbaW5kZXhdICE9PSBzdHIyW2luZGV4XSkpIHtcclxuICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXN1bHQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVGhlIGNvZGUgaXMgY29waWVkIGZyb20gdHNrX29wZW5fYm5kX3dpbGQgYW5kIFNlYXJjaEFuZFJlcGxhY2VXaWxkQ2hhcnNcclxuICAvLy8gVGhlIHJlZmFjdG9yaW5nIGlzIG5vdCBwZXJmb3JtZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XHJcbiAgLy8vIFRoZSBjb2RlIHJlcGxhY2VzIHNwZWNpYWwgY2hhcmFjaHRlcnMgOiogPyB3aXRoIHJlY2lldmVkIGZpbGxlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2VhcmNoQW5kUmVwbGFjZVdpbGRDaGFycyhidWY6IHN0cmluZywgbGVuOiBudW1iZXIsIGZpbGxlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGJ1ZiA9IE5TdHJpbmcuUGFkUmlnaHQoYnVmLCBsZW4pO1xyXG5cclxuICAgIGxldCBlc2NDaGFyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgc3RvcFNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IHRtcEJ1ZjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKGxlbik7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGVuOyBpID0gaSArIDEpIHtcclxuICAgICAgc3dpdGNoIChidWZbaV0pIHtcclxuICAgICAgICBjYXNlICgnXFxcXCcpOiB7XHJcbiAgICAgICAgICBsZXQgaXNOZXh0Q2hhcldpbGQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgICAgICAgIC8vSWYgbmV4dCBjaGFyIGlzIG5vdCB3aWxkICwgdGhlbiBjb3B5ICdcXCcsIGlmIHRoaXMgaXMgZmlyc3QgY2hhci5cclxuICAgICAgICAgIGlmICgoaSArIDEgPCBsZW4pICYmIChidWZbaSArIDFdICE9ICcqJyAmJiBidWZbaSArIDFdICE9ICdcXFxcJykpXHJcbiAgICAgICAgICAgIGlzTmV4dENoYXJXaWxkID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAoZXNjQ2hhciB8fCAhaXNOZXh0Q2hhcldpbGQpXHJcbiAgICAgICAgICAgIHRtcEJ1Zi5BcHBlbmQoYnVmW2ldKTtcclxuICAgICAgICAgIGVzY0NoYXIgPSAhZXNjQ2hhcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICgnKicpOlxyXG4gICAgICAgICAgaWYgKGVzY0NoYXIpXHJcbiAgICAgICAgICAgIHRtcEJ1Zi5BcHBlbmQoYnVmW2ldKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0bXBCdWYuQXBwZW5kKGZpbGxlciwgbGVuIC0gdG1wQnVmLkxlbmd0aCk7XHJcbiAgICAgICAgICAgIHN0b3BTZWFyY2ggPSB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZXNjQ2hhciA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnPyc6XHJcbiAgICAgICAgICB0bXBCdWYuQXBwZW5kKGZpbGxlcik7XHJcbiAgICAgICAgICBlc2NDaGFyID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdG1wQnVmLkFwcGVuZChidWZbaV0pO1xyXG4gICAgICAgICAgZXNjQ2hhciA9IGZhbHNlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgdGV4dDogc3RyaW5nID0gdG1wQnVmLlRvU3RyaW5nKCk7XHJcbiAgICByZXR1cm4gTlN0cmluZy5UcmltRW5kKE5TdHJpbmcuVHJpbUVuZCh0ZXh0LCBbJ1xcMCddKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJlbW92ZSB0aGUgdGFzayBwYXRoIGRlbGltaXRlciBmcm9tIHRoZSBlcnJvciBzdHJpbmcuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNvdXJjZVwiPnN0cmluZyB3aXRoIGRlbGltaXRlciA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3RyaW5nIGZvciBjb25zb2xlIGVycm9yIDwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0Q29uc29sZUVyb3JTdHJpbmcoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGNvbnNvbGVFcm9yU3RyaW5nOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAgIGlmICghaXNOdWxsT3JVbmRlZmluZWQoc291cmNlKSlcclxuICAgICAgY29uc29sZUVyb3JTdHJpbmcgPSB0aGlzLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBUQVNLX1BBVEhfREVMSU1JVEVSLCBcIlwiKTtcclxuXHJcbiAgICByZXR1cm4gY29uc29sZUVyb3JTdHJpbmc7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJlbW92ZSB0aGUgdGFzayBwYXRoIGZyb20gdGhlIGVycm9yIHN0cmluZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic291cmNlXCI+c3RyaW5nIHdpdGggZGVsaW1pdGVyIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBzdHJpbmcgZm9yIGNvbnNvbGUgZXJyb3IgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRNc2dCb3hFcm9yU3RyaW5nKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCB0b2tlbnM6IHN0cmluZyBbXTtcclxuICAgIGxldCBtc2dCb3hFcm9yU3RyaW5nOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoXCJcIik7XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChzb3VyY2UpKXtcclxuICAgICAgdG9rZW5zID0gdGhpcy50b2tlbml6ZShzb3VyY2UsIFRBU0tfUEFUSF9ERUxJTUlURVIpO1xyXG5cclxuICAgICAgZm9yIChsZXQgaTpudW1iZXIgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKVxyXG4gICAgICB7XHJcbiAgICAgICAgbXNnQm94RXJvclN0cmluZy5BcHBlbmQodG9rZW5zW2ldKTtcclxuICAgICAgICBpKys7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHJldHVybiBtc2dCb3hFcm9yU3RyaW5nLnRvU3RyaW5nKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
455
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9TdHJVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sT0FBTyxDQUFDO0FBRTFCLE1BQU0sY0FBYyxHQUFXLFFBQVEsQ0FBQztBQUN4QyxNQUFNLFVBQVUsR0FBVyxRQUFRLENBQUM7QUFDcEMsTUFBTSxXQUFXLEdBQVcsUUFBUSxDQUFDO0FBQ3JDLE1BQU0sVUFBVSxHQUFXLENBQUMsQ0FBQztBQUM3QixNQUFNLG1CQUFtQixHQUFXLFFBQVEsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVcsQ0FBQyxDQUFDO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBVyxDQUFDLENBQUM7QUFDcEMsTUFBTSxVQUFVLEdBQVcsQ0FBQyxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBVyxDQUFDLENBQUM7QUFFbkMsTUFBTSxPQUFPLE9BQU87SUFJbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFXLEVBQUUsR0FBVztRQUN0QyxJQUFJLE1BQWMsQ0FBQztRQUNuQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7WUFDWCxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFO2dCQUNwQixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osT0FBTyxNQUFNLENBQUM7YUFDZjtZQUNELE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtnQkFDdEMsR0FBRyxH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bUJBQW1CLENBQUMsQ0FBQztZQUVwRCxLQUFLLElBQUksQ0FBQyxHQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFDN0M7Z0JBQ0UsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDLEVBQUUsQ0FBQzthQUNMO1NBQ0Y7UUFJRCxPQUFPLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLENBQUM7O0FBNXJCYyxzQkFBYyxHQUFXLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdCwgTlN0cmluZywgUmVmUGFyYW0sIFN0cmluZ0J1aWxkZXIsIGlzTnVsbE9yVW5kZWZpbmVkfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuaW1wb3J0IHtVdGlsU3RyQnl0ZU1vZGV9IGZyb20gXCIuL1V0aWxTdHJCeXRlTW9kZVwiO1xyXG5pbXBvcnQge1J0Zn0gZnJvbSBcIi4vUnRmXCI7XHJcblxyXG5jb25zdCBIVE1MX0JBQ0tTTEFTSDogc3RyaW5nID0gXCImIzA5MjtcIjtcclxuY29uc3QgSFRNTF9DT01NQTogc3RyaW5nID0gXCImIzA0NDtcIjtcclxuY29uc3QgSFRNTF9IWVBIRU46IHN0cmluZyA9IFwiJiMwNDU7XCI7XHJcbmNvbnN0IFNUUl8yX0hUTUw6IG51bWJlciA9IDE7XHJcbmNvbnN0IFRBU0tfUEFUSF9ERUxJTUlURVI6IHN0cmluZyA9IFwiQEB8fEBAXCI7XHJcbmV4cG9ydCBjb25zdCBTRVFfMl9IVE1MOiBudW1iZXIgPSAyO1xyXG5leHBvcnQgY29uc3QgSFRNTF8yX1NUUjogbnVtYmVyID0gMztcclxuY29uc3QgSFRNTF8yX1NFUTogbnVtYmVyID0gNDtcclxuZXhwb3J0IGNvbnN0IFNFUV8yX1NUUjogbnVtYmVyID0gNTtcclxuXHJcbmV4cG9ydCBjbGFzcyBTdHJVdGlsIHtcclxuICBwcml2YXRlIHN0YXRpYyBfcGFkZGluZ1NwYWNlczogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiB0cmltIHRoZSBlbmQgb2YgdGhlIHN0cmluZzwvc3VtbWFyeT5cclxuICBzdGF0aWMgbWVtX3RyaW0oc3RyOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIGlmIChsZW4gPiAwKSB7XHJcbiAgICAgIGlmIChsZW4gPiBzdHIubGVuZ3RoKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgICB3aGlsZSAobGVuID4gMCAmJiBzdHJbbGVuIC0gMV0gPT09ICcgJykge1xyXG4gICAgICAgIGxlbiA9IGxlbiAtIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJlc3VsdCA9IGxlbjtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWVtbW92ZShkZXN0OiBzdHJpbmcsIGRlc3RDb3VudDogbnVtYmVyLCBzcmM6IHN0cmluZywgc3JjQ291bnQ6IG51bWJlciwgbGVuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihkZXN0Lmxlbmd0aCArIGxlbik7XHJcbiAgICBpZiAoVXRpbFN0ckJ5dGVNb2RlLmlzTG9jYWxlRGVmTGFuZ0pQTigpICYmIGRlc3QubGVuZ3RoIDwgZGVzdENvdW50KSB7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKE5TdHJpbmcuRnJvbUNoYXIoJyAnLCBkZXN0Q291bnQpKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBzdHJpbmdCdWlsZGVyLkFwcGVuZChkZXN0LnN1YnN0cigwLCBkZXN0Q291bnQpKTtcclxuICAgIH1cclxuICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKHNyYy5zdWJzdHIoc3JjQ291bnQsIGxlbikpO1xyXG5cclxuICAgIGlmIChzdHJpbmdCdWlsZGVyLkxlbmd0aCA8IGRlc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoZGVzdC5zdWJzdHIoc3RyaW5nQnVpbGRlci5MZW5ndGgpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHJpbmdCdWlsZGVyLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWVtY3B5KGRlc3Q6IHN0cmluZywgZGVzdENvdW50OiBudW1iZXIsIHNyYzogc3RyaW5nLCBzY3JDb3VudDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBtZW1jcHkoZGVzdDogc3RyaW5nW10sIGRlc3RDb3VudDogbnVtYmVyLCBzcmM6IHN0cmluZ1tdLCBzcmNDb3VudDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZDtcclxuICBzdGF0aWMgbWVtY3B5KGRlc3Q6IGFueSwgZGVzdENvdW50OiBudW1iZXIsIHNyYzogYW55LCBzY3JDb3VudE9yU3JjQ291bnQ6IG51bWJlciwgY291bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNSAmJiAoZGVzdCA9PT0gbnVsbCB8fCBkZXN0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpICYmIChkZXN0Q291bnQgPT09IG51bGwgfHwgZGVzdENvdW50LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChzcmMgPT09IG51bGwgfHwgc3JjLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpICYmIChzY3JDb3VudE9yU3JjQ291bnQgPT09IG51bGwgfHwgc2NyQ291bnRPclNyY0NvdW50LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChjb3VudCA9PT0gbnVsbCB8fCBjb3VudC5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSkge1xyXG4gICAgICByZXR1cm4gU3RyVXRpbC5tZW1jcHlfMChkZXN0LCBkZXN0Q291bnQsIHNyYywgc2NyQ291bnRPclNyY0NvdW50LCBjb3VudCk7XHJcbiAgICB9XHJcbiAgICBTdHJVdGlsLm1lbWNweV8xKGRlc3QsIGRlc3RDb3VudCwgc3JjLCBzY3JDb3VudE9yU3JjQ291bnQsIGNvdW50KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb3B5IHBhcnQgb2Ygc3RyaW5nIGludG8gYW5vdGhlciBzdHJpbmcsIGxpa2UgbWVtY3B5IG9mIEMsIGJ1dCA0IHN0cmluZyBvbmx5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImRlc3RcIj5zdHJpbmc8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVzdENvdW50XCI+b2YgY291bnRlciBzdGFydCBmcm9tIGluIGRlc3RpZ25hdGlvbiBzdHJpbmc8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3JjXCI+c3RyaW5nPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNjckNvdW50XCI+b2YgY291bnRlciBzdGFydCBmcm9tIGluIHNvdXJjZSBzdHJpbmc8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY291bnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gbmV3IHZhbHVlIG9mIGRlc3RpZ25hdGlvbiBzdHJpbmc8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbWVtY3B5XzAoZGVzdDogc3RyaW5nLCBkZXN0Q291bnQ6IG51bWJlciwgc3JjOiBzdHJpbmcsIHNjckNvdW50OiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihkZXN0LnN1YnN0cigwLCBkZXN0Q291bnQpKTtcclxuXHJcbiAgICBpZiAoc2NyQ291bnQgKyBjb3VudCA8IHNyYy5sZW5ndGgpIHtcclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3JjLnN1YnN0cihzY3JDb3VudCwgY291bnQgLSBzY3JDb3VudCkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKHNyYy5zdWJzdHIoc2NyQ291bnQpKTtcclxuICAgIH1cclxuICAgIGxldCBzaXplOiBudW1iZXIgPSBkZXN0Lmxlbmd0aCAtIGRlc3RDb3VudCAtIGNvdW50O1xyXG4gICAgaWYgKHNpemUgPiAwKSB7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKGRlc3Quc3Vic3RyKGRlc3RDb3VudCArIGNvdW50KSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyaW5nQnVpbGRlci5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgbWVtY3B5XzEoZGVzdDogc3RyaW5nW10sIGRlc3RDb3VudDogbnVtYmVyLCBzcmM6IHN0cmluZ1tdLCBzcmNDb3VudDogbnVtYmVyLCBjb3VudDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAoY291bnQgPiAwICYmIGRlc3RDb3VudCA8IGRlc3QubGVuZ3RoICYmIHNyY0NvdW50IDwgc3JjLmxlbmd0aCkge1xyXG4gICAgICBkZXN0W2Rlc3RDb3VudCsrXSA9IHNyY1tzcmNDb3VudCsrXTtcclxuICAgICAgY291bnQgPSBjb3VudCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbWVtc2V0KGRlc3Q6IHN0cmluZywgZGVzdENvdW50OiBudW1iZXIsIGluVmFsOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcik6IHN0cmluZztcclxuICBzdGF0aWMgbWVtc2V0KGRlc3Q6IHN0cmluZ1tdLCBkZXN0Q291bnQ6IG51bWJlciwgaW5WYWw6IHN0cmluZywgY291bnRlcjogbnVtYmVyKTogdm9pZDtcclxuICBzdGF0aWMgbWVtc2V0KGRlc3Q6IGFueSwgZGVzdENvdW50OiBudW1iZXIsIGluVmFsOiBzdHJpbmcsIGNvdW50ZXI6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCAmJiAoZGVzdCA9PT0gbnVsbCB8fCBkZXN0LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpICYmIChkZXN0Q291bnQgPT09IG51bGwgfHwgZGVzdENvdW50LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpICYmIChpblZhbCA9PT0gbnVsbCB8fCBpblZhbC5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoY291bnRlciA9PT0gbnVsbCB8fCBjb3VudGVyLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKSB7XHJcbiAgICAgIHJldHVybiBTdHJVdGlsLm1lbXNldF8wKGRlc3QsIGRlc3RDb3VudCwgaW5WYWwsIGNvdW50ZXIpO1xyXG4gICAgfVxyXG4gICAgU3RyVXRpbC5tZW1zZXRfMShkZXN0LCBkZXN0Q291bnQsIGluVmFsLCBjb3VudGVyKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbnNlcnQgdG8gc3RyaW5nIGNoYXJzIG4gdGltZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGVzdFwiPnN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkZXN0Q291bnRcIj5vZiBjb3VudGVyIHN0YXJ0IGZyb20gaW4gZGVzdGlnbmF0aW9uIHN0cmluZyB0byBzdGFydCBpbnNlcnRpb24gb2YgY2hhciBmcm9tPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluVmFsXCI+MiBpbnNlcnQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY291bnRlclwiPi0gbnVtYmVyIG9mIHRpbWVzIHRvIGluc2VydCB0aGUgY2hhcjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBuZXcgdmFsdWUgb2YgZGVzdGlnbmF0aW9uIHN0cmluZzwvcmV0dXJucz5cclxuICBwcml2YXRlIHN0YXRpYyBtZW1zZXRfMChkZXN0OiBzdHJpbmcsIGRlc3RDb3VudDogbnVtYmVyLCBpblZhbDogc3RyaW5nLCBjb3VudGVyOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZpcnN0OiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoZGVzdC5zdWJzdHIoMCwgZGVzdENvdW50KSk7XHJcbiAgICB3aGlsZSAoY291bnRlciA+IDApIHtcclxuICAgICAgZmlyc3QuQXBwZW5kKGluVmFsKTtcclxuICAgICAgY291bnRlciA9IGNvdW50ZXIgLSAxO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaXJzdC5MZW5ndGggPCBkZXN0Lmxlbmd0aCkge1xyXG4gICAgICBmaXJzdC5BcHBlbmQoZGVzdC5zdWJzdHIoZmlyc3QuTGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlyc3QuVG9TdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIG1lbXNldF8xKGRlc3Q6IHN0cmluZ1tdLCBkZXN0Q291bnQ6IG51bWJlciwgaW5WYWw6IHN0cmluZywgY291bnRlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB3aGlsZSAoY291bnRlciA+IDAgJiYgZGVzdENvdW50IDwgZGVzdC5sZW5ndGgpIHtcclxuICAgICAgZGVzdFtkZXN0Q291bnQrK10gPSBpblZhbDtcclxuICAgICAgY291bnRlciA9IGNvdW50ZXIgLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN0cnN0cihzdHI6IHN0cmluZywgc3Vic3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZyb206IG51bWJlciA9IHN0ci5pbmRleE9mKHN1YnN0cik7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoZnJvbSA8IDApIHtcclxuICAgICAgcmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXN1bHQgPSBzdHIuc3Vic3RyKGZyb20pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV2ZXJzZXMgc3RyaW5nIHZhbHVlcy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRleHRcIj5UaGUgU3RyaW5nQnVpbGRlciBvYmplY3QgY29udGFpbmluZyB0aGUgc3RyaW5nIHRvIGJlIHJldmVyc2VkLjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPlRoZSByZXZlcnNlZCBzdHJpbmcgY29udGFpbmVkIGluIGEgU3RyaW5nQnVpbGRlciBvYmplY3QuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBSZXZlcnNlU3RyaW5nKHRleHQ6IFN0cmluZ0J1aWxkZXIpOiBTdHJpbmdCdWlsZGVyIHtcclxuICAgIC8vIFRPRE86IHVzZSBzdHJpbmcuUmV2ZXJzZSgpXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gTlN0cmluZy5Ub0NoYXJBcnJheSh0ZXh0LlRvU3RyaW5nKCkpO1xyXG4gICAgYXJyYXkucmV2ZXJzZSgpO1xyXG4gICAgcmV0dXJuIG5ldyBTdHJpbmdCdWlsZGVyKE5TdHJpbmcuRnJvbUNoYXJzKGFycmF5KSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlbW92ZSBzcGFjZXMgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBzdHJpbmc8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyB0byB0cmltXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIHJ0cmltKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBTdHJVdGlsLnJ0cmltV2l0aE51bGwoc3RyLCBmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlbW92ZSBzcGFjZXMgYW5kL29yIE51bGwgY2hhcnMgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiBzdHJpbmc8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyB0byB0cmltXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidHJpbU51bGxDaGFyc1wiPldoZXRoZXIgdG8gcmVtb3ZlIE5VTEwgY2hhcmFjdGVycyBvciBub3RcclxuICAvLy8gPC9wYXJhbT5cclxuICBzdGF0aWMgcnRyaW1XaXRoTnVsbChzdHI6IHN0cmluZywgdHJpbU51bGxDaGFyczogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAodHlwZW9mIHN0ciA9PT0gXCJ1bmRlZmluZWRcIiB8fCBzdHIgPT09IG51bGwgfHwgc3RyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXN1bHQgPSBzdHI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGlkeDogbnVtYmVyID0gc3RyLmxlbmd0aCAtIDE7XHJcbiAgICAgIGlmICh0cmltTnVsbENoYXJzKSB7XHJcblxyXG4gICAgICAgIHdoaWxlIChpZHggPj0gMCAmJiAoc3RyW2lkeF0gPT09ICcgJyB8fCBzdHJbaWR4XSA9PT0gU3RyaW5nLmZyb21DaGFyQ29kZSgwKS8qJ1x1MDAwMCcqLykpIHtcclxuICAgICAgICAgIGlkeCA9IGlkeCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHdoaWxlIChpZHggPj0gMCAmJiBzdHJbaWR4XSA9PT0gJyAnKSB7XHJcbiAgICAgICAgICBpZHggPSBpZHggLSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZHggPSBpZHggKyAxO1xyXG5cclxuICAgICAgaWYgKGlkeCA8IHN0ci5sZW5ndGgpIHtcclxuICAgICAgICByZXN1bHQgPSBzdHIuc3Vic3RyKDAsIGlkeCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZW1vdmUgc3BhY2VzIGZyb20gdGhlIGxlZnQgc2lkZSBvZiBzdHJpbmc8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHN0cmluZyB0byB0cmltXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIGx0cmltKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBsZW5ndGg6IG51bWJlciA9IHN0ci5sZW5ndGg7XHJcbiAgICBsZXQgaTogbnVtYmVyID0gMDtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuICAgIGlmIChzdHIgPT09IG51bGwgfHwgbGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB3aGlsZSAoaSA8IGxlbmd0aCAmJiBzdHJbaV0gPT09ICcgJy8qJyAnKi8pIHtcclxuICAgICAgICBpID0gaSArIDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgIHN0ciA9IHN0ci5zdWJzdHIoaSk7XHJcbiAgICAgIH1cclxuICAgICAgcmVzdWx0ID0gc3RyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5UaGlzIGZ1bmN0aW9uIGZvciBEZWxldGluZyBTdHJpbmcgZnJvbSBlbmQgJiBzdGFydCBvZiBpbnB1dFxyXG4gIC8vLyBTdHJpbmdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPlN0cmluZyAsIHdoaWNoIGNhbiBpbmNsdWRlIHN0clRvRGVsZXRlIHNwYWNlcyBvbiBpbnB1dFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clRvRGVsZXRlXCI+bmVlZCBkZWxldGUgdGhpcyBTdHJpbmcgZnJvbSBzdGFydC9lbmQgb2Ygc3RyLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gU3RyaW5nIHdpdGhvdXQgc3RyVG9EZWxldGUgb24gZW5kICYgc3RhcnQsXHJcbiAgLy8vIG9yICdudWxsJyBpZiBTdGluZyBoYXNuJ3Qgbm90ICBjaGFyYWN0ZXJzIGluc2lkZVxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIERlbGV0ZVN0cmluZ3NGcm9tRW5kcyhzdHI6IHN0cmluZywgc3RyVG9EZWxldGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoc3RyLnN0YXJ0c1dpdGgoc3RyVG9EZWxldGUpKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHIoc3RyVG9EZWxldGUubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGlmIChzdHIuZW5kc1dpdGgoc3RyVG9EZWxldGUpKSB7XHJcbiAgICAgIHN0ciA9IHN0ci5zdWJzdHIoMCwgc3RyLmxlbmd0aCAtIHN0clRvRGVsZXRlLmxlbmd0aCk7XHJcbiAgICB9XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc3VsdCA9IHN0cjtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHBhZCBhIHN0cmluZyB3aXRoIHRyYWlsaW5nIHNwYWNlcyB1cCB0byB0aGUgZ2l2ZW4gbGVuZ3RoPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBzdHJpbmcgdG8gcGFkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuXCI+dGhlIGV4cGVjdGVkIGxlbmd0aCBhZnRlciBwYWRkaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgc3RhdGljIHBhZFN0cihzdHI6IHN0cmluZywgbGVuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBhZExlbjogbnVtYmVyID0gbGVuIC0gc3RyLmxlbmd0aDtcclxuXHJcbiAgICBpZiAocGFkTGVuID4gMCkge1xyXG4gICAgICBpZiAoU3RyVXRpbC5fcGFkZGluZ1NwYWNlcyA9PT0gbnVsbCB8fCBTdHJVdGlsLl9wYWRkaW5nU3BhY2VzLmxlbmd0aCA8IHBhZExlbikge1xyXG4gICAgICAgIFN0clV0aWwuX3BhZGRpbmdTcGFjZXMgPSBOU3RyaW5nLkZyb21DaGFyKCcgJywgcGFkTGVuKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc3RyaW5nQnVpbGRlcjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKGxlbik7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKHN0cik7XHJcbiAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKFN0clV0aWwuX3BhZGRpbmdTcGFjZXMsIDAsIHBhZExlbik7XHJcbiAgICAgIHN0ciA9IHN0cmluZ0J1aWxkZXIuVG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHRoaXMgbWV0aG9kIHdpbGwgc2VydmUgYXMgYSBzdHJpbmcgdG9rZW5pemVyIGluc3RlYWQgb2YgdXNpbmcgdGhlIGMjIHNwbGl0IG1ldGhvZFxyXG4gIC8vLyBzaW5jZSB0aGVyZSBhcmUgZGlmZnJlbmNlcyBidHdlZW4gamF2YSB0b2tlbml6ZXIgYW5kIGMjIHNwbGl0XHJcbiAgLy8vIHRoZSBpbXBsaW1lbnRhdGlvbiBnaXZlbiBieSB0aGUgY29udmVyc2lvbiB0b29sIGlzIG5vdCBTdWZmaWNpZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VyY2VcIj4tIHRoZSBzb3VyY2Ugc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlbGltXCI+LSB0aGUgc3RyaW5nIG9mIGRlbGltaXRlcnMgdXNlZCB0byBzcGxpdCB0aGUgc3RyaW5nIChlYWNoIGNoYXJhY3RlciBpbiB0aGUgU3RyaW5nIGlzIGEgZGVsaW1pdGVyXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBhcnJheSBvZiB0b2tlbiBhY2NvcmRpbmcgd2hpY2ggaXMgdGhlIHNhbWUgYXMgc3RyaW5nIHRva2VuaXplciBpbiBqYXZhXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgdG9rZW5pemUoc291cmNlOiBzdHJpbmcsIGRlbGltOiBzdHJpbmd8UmVnRXhwKTogc3RyaW5nW10ge1xyXG4gICAgLy8gSXQgaXMgbWVudGlvbmVkIGluIHRoZSBjb21tZW50IHRoYXQgd2Ugc2hvdWxkIG5vdCB1c2UgU3RyaW5nLlNwbGl0KClcclxuICAgIC8vIGJlY2F1c2UgaXRzIGJlaGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIEphdmEncyB0b2tlbml6ZXIuXHJcbiAgICAvLyBTbywgd2Ugd2VyZSBzdXBwb3NlIHRvIHVzZSBvdXIgb3duIGltcGxlbWVudGF0aW9uICh0aGUgY29tbWVudGVkIGNvZGUgYmVsb3cpLlxyXG4gICAgLy8gQnV0IGFsbCB0aGVzZSB5ZWFycywgd2Ugd2VyZSBjYWxsaW5nIFhtbFBhcnNlci5nZXRUb2tlbigpIHdoaWNoIHdhcyBhY3R1YWxseVxyXG4gICAgLy8gdXNpbmcgU3RyaW5nLlNwbGl0KCkuIEFuZCB3ZSBkaWRuJ3QgZmFjZSBhbnkgcHJvYmxlbS5cclxuICAgIC8vIFNvLCBpdCBzZWVtcyB0aGF0IHdlIGRvIG5vdCBoYXZlIHByb2JsZW0gaW4gdXNpbmcgU3RyaW5nLlNwbGl0KCkuXHJcbiAgICAvLyBCdXQgbm93LCB3ZSBjYW4gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2UgaGVyZS4uLlxyXG4gICAgLy8gWG1sUGFyc2VyLmdldFRva2VucygpIHdhcyBnZXR0aW5nIGEgU3RyaW5nW10gdXNpbmcgU3RyaW5nLlNwbGl0KCkuXHJcbiAgICAvLyBJdCB3YXMgdGhlbiBjcmVhdGluZyBhIExpc3Q8U3RyaW5nPiBmcm9tIHRoaXMgU3RyaW5nW10gYW5kIHdhcyByZXR1cm5pbmcgaXQgdG9cclxuICAgIC8vIHRva2VuaXplKCkuXHJcbiAgICAvLyB0b2tlbml6ZSgpIHdhcyBhZ2FpbiBjb252ZXJ0aW5nIHRoaXMgTGlzdDxTdHJpbmc+IGJhY2sgdG8gU3RyaW5nW10uXHJcbiAgICAvLyBTbyB3aHkgbm90IGNhbGwgU3RyaW5nLlNwbGl0KCkgZGlyZWN0bHk/XHJcbiAgICByZXR1cm4gc291cmNlLnNwbGl0KGRlbGltKTtcclxuICAgIC8qXHJcblN0cmluZyBbXSB0b2tlbnMgPSBudWxsO1xyXG5cclxuY2hhciBbXSBkZWxpbUFycnkgPSBkZWxpbS50b0NoYXJBcnJheSgpO1xyXG5cclxuLy9zaW5jZSBqYXZhIGRpc2NhcmRzIGRlbGltaXRlcnMgZnJvbSB0aGUgc3RhcnQgYW5kIGVuZCBvZiB0aGUgc3RyaW5nIGFuZCBjIyBkb2VzIG5vdFxyXG4vL3dlIG5lZWQgdG8gcmVtb3ZlIHRoZW0gbWFudWFsbHlcclxuLy8gICAgICAgc291cmNlID0gc291cmNlLlRyaW1FbmQoZGVsaW1BcnJ5KTtcclxuLy8gICAgIHNvdXJjZSA9IHNvdXJjZS5UcmltU3RhcnQoZGVsaW1BcnJ5KTtcclxuc291cmNlID0gc291cmNlLnRyaW0oKTtcclxuXHJcbi8vbm93IHRoYXQgd2UgaGF2ZSByZW1vdmUgc3RhcnRpbmcgYW5kIGVuZGluZyBkZWxpbWl0ZXJzIHdlIGNhbiBzcGxpdFxyXG50b2tlbnMgPSBzb3VyY2UuU3BsaXQoZGVsaW1BcnJ5KTtcclxuXHJcbi8qXHJcbiogb25seSBvbmUgcHJvYmxlbTogaWYgd2UgaGF2ZSB0d28gU3Vic2VxdWVudCBkZWxpbWl0ZXJzIGZvciBleGFtcGxlIDpcclxuKiB0aGUgZGVsaW1pdGVyIGlzICc7JyBhbmQgdGhlIHN0cmluZyBpczogXCJmaXJzdDs7c2Vjb25kO3RoaXJkXCJcclxuKiB0aGVuIGluIGphdmEgU3RyaW5nIHRva2VuaXplciB3aWxsIGdpdmUgdXMgb25seSAzIHRva2VucyA6Zmlyc3Qsc2Vjb25kIGFuZCB0aGlyZFxyXG4qIHdoaWxlIGlzIGMjIHNwbGl0IHdldGhvZCB3aWxsIHJldHVybiA0IHRva2VuczogZmlyc3QsZW1wdHkgc3RyaW5nLHNlY29uZCBhbmQgdGhpcmRcclxuKiB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGF0XHJcbiovXHJcbiAgICAvKlxyXG4gICAgTGlzdCByZXMgID0gbmV3IExpc3QoKTtcclxuICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKylcclxuICAgIHtcclxuICAgIGlmICh0b2tlbnNbaV0gIT0gXCJcIiApXHJcbiAgICByZXMuYWRkSXRlbSh0b2tlbnNbaV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAoU3RyaW5nIFtdKShyZXMuZ2V0QWxsSXRlbXMgKFN0cmluZy5jbGFzcykpOyovXHJcblxyXG5cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0cmFuc2xhdGUgZnJvbSBzdHJpbmcgdG8gaGV4YSBkdW1wIGNoYXIgYnkgY2hhclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJpbmdcIj50byB0cmFuc2xhdGUgaXQgdG8gdGhlIGJ5dGUgc3RyZWFtPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1pbkxlbmd0aFwiPnRoZSBtaW5pbWFsIGxlbmd0aCBvZiBoZXhhIGRpZ2l0cyBmb3IgZWFjaCBjaGFyPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBieXRlIHN0cmVhbSBpbiBmb3JtIG9mIHN0cmluZzwvcmV0dXJucz5cclxuICBzdGF0aWMgc3RyaW5nVG9IZXhhRHVtcChzdHI6IHN0cmluZywgbWluTGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihzdHIubGVuZ3RoICogbWluTGVuZ3RoKTtcclxuICAgIGZvciAobGV0IGluZHg6IG51bWJlciA9IDA7IGluZHggPCBzdHIubGVuZ3RoOyBpbmR4ID0gaW5keCArIDEpIHtcclxuICAgICAgbGV0IGN1cnJJbnQ6IG51bWJlciA9IHN0ci5jaGFyQ29kZUF0KGluZHgpO1xyXG4gICAgICBsZXQgaGV4U3RyOiBzdHJpbmcgPSBjdXJySW50LnRvU3RyaW5nKDE2KTtcclxuICAgICAgd2hpbGUgKGhleFN0ci5sZW5ndGggPCBtaW5MZW5ndGgpIHtcclxuICAgICAgICBoZXhTdHIgPSBcIjBcIiArIGhleFN0cjtcclxuICAgICAgfVxyXG4gICAgICBzdHJpbmdCdWlsZGVyLkFwcGVuZChoZXhTdHIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIuVG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHNlYXJjaEFuZFJlcGxhY2Uoc3RyOiBzdHJpbmcsIGZyb206IHN0cmluZywgdG86IHN0cmluZyk6IHN0cmluZztcclxuICBzdGF0aWMgc2VhcmNoQW5kUmVwbGFjZShzdHI6IHN0cmluZywgZnJvbTogc3RyaW5nW10sIHRvOiBzdHJpbmdbXSk6IHN0cmluZztcclxuICBzdGF0aWMgc2VhcmNoQW5kUmVwbGFjZShzdHI6IHN0cmluZywgZnJvbTogYW55LCB0bzogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzICYmIChzdHIgPT09IG51bGwgfHwgc3RyLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpICYmIChmcm9tID09PSBudWxsIHx8IGZyb20uY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKHRvID09PSBudWxsIHx8IHRvLmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKSB7XHJcbiAgICAgIHJldHVybiBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2VfMChzdHIsIGZyb20sIHRvKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2VfMShzdHIsIGZyb20sIHRvKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gcmVwbGFjZSBldmVyeSBhcHBlYXJhbmNlIG9mICdmcm9tJyBpbiAnc3RyJyB3aXRoICd0byc8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHdvcmtpbmcgYmFzZSBzb3VyY2Ugc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZnJvbVwiPnRoZSBzdHJpbmcgdG8gcmVwbGFjZSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRvXCI+dGhlIHN0cmluZyB1c2UgaW5zdGVhZCAnZnJvbScgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG1vZGlmaWVkIFN0cmluZyA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VhcmNoQW5kUmVwbGFjZV8wKHN0cjogc3RyaW5nLCBmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGxhc3RTdWJTdHI6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgc3RhcnRTdWJTdHI6IG51bWJlcjtcclxuICAgIGxldCByZXN1bHQ6IHN0cmluZztcclxuXHJcbiAgICBpZiAoKHN0YXJ0U3ViU3RyID0gc3RyLmluZGV4T2YoZnJvbSkpID09PSAtMSkge1xyXG4gICAgICByZXN1bHQgPSBzdHI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihzdHIubGVuZ3RoKTtcclxuICAgICAgd2hpbGUgKHN0YXJ0U3ViU3RyICE9PSAtMSkge1xyXG4gICAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKHN0ci5zdWJzdHIobGFzdFN1YlN0ciwgc3RhcnRTdWJTdHIgLSBsYXN0U3ViU3RyKSArIHRvKTtcclxuICAgICAgICBzdGFydFN1YlN0ciA9IHN0YXJ0U3ViU3RyICsgZnJvbS5sZW5ndGg7XHJcbiAgICAgICAgbGFzdFN1YlN0ciA9IHN0YXJ0U3ViU3RyO1xyXG4gICAgICAgIHN0YXJ0U3ViU3RyID0gc3RyLmluZGV4T2YoZnJvbSwgbGFzdFN1YlN0cik7XHJcbiAgICAgIH1cclxuICAgICAgc3RyaW5nQnVpbGRlci5BcHBlbmQoc3RyLnN1YnN0cihsYXN0U3ViU3RyKSk7XHJcbiAgICAgIHJlc3VsdCA9IHN0cmluZ0J1aWxkZXIuVG9TdHJpbmcoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlcGxhY2UgZXZlcnkgYXBwZWFyYW5jZSBvZiBzdHJpbmdzIG9mICdmcm9tJyBpbiAnc3RyJyB3aXRoIHRoZSBhY2NvcmRpbmcgc3RyaW5nIGluICd0byc8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyXCI+dGhlIHdvcmtpbmcgYmFzZSBzb3VyY2Ugc3RyaW5nIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZnJvbVwiPnRoZSBzdHJpbmcgdG8gcmVwbGFjZSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRvXCI+dGhlIHN0cmluZyB1c2UgaW5zdGVhZCAnZnJvbScgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG1vZGlmaWVkIFN0cmluZyA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VhcmNoQW5kUmVwbGFjZV8xKHN0cjogc3RyaW5nLCBmcm9tOiBzdHJpbmdbXSwgdG86IHN0cmluZ1tdKTogc3RyaW5nIHtcclxuICAgIGxldCBsYXN0U3ViU3RyOiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IHNhckluZGV4OiBudW1iZXIgPSAwO1xyXG4gICAgbGV0IGZyb21Db3B5OiBzdHJpbmdbXSA9IGZyb20uc2xpY2UoKTtcclxuICAgIGxldCBzdGFydFN1YlN0cjogbnVtYmVyO1xyXG4gICAgbGV0IFNBUmluZGV4OiBSZWZQYXJhbTxudW1iZXI+ID0gbmV3IFJlZlBhcmFtKDApO1xyXG4gICAgc3RhcnRTdWJTdHIgPSBTdHJVdGlsLmluZGV4T2Yoc3RyLCBmcm9tQ29weSwgbGFzdFN1YlN0ciwgU0FSaW5kZXgpO1xyXG4gICAgc2FySW5kZXggPSBTQVJpbmRleC52YWx1ZTtcclxuICAgIGlmIChzdGFydFN1YlN0ciA9PT0gLTEpXHJcbiAgICAgIHJldHVybiBzdHI7XHJcblxyXG4gICAgbGV0IHJlc3VsdDogc3RyaW5nO1xyXG4gICAgbGV0IHRtcEJ1ZjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKHN0ci5sZW5ndGgpO1xyXG4gICAgd2hpbGUgKHN0YXJ0U3ViU3RyICE9PSAtMSkge1xyXG4gICAgICB0bXBCdWYuQXBwZW5kKHN0ci5zdWJzdHIobGFzdFN1YlN0ciwgc3RhcnRTdWJTdHIgLSBsYXN0U3ViU3RyKSArIHRvW3NhckluZGV4XSk7XHJcbiAgICAgIHN0YXJ0U3ViU3RyICs9IGZyb21Db3B5W3NhckluZGV4XS5sZW5ndGg7XHJcbiAgICAgIGxhc3RTdWJTdHIgPSBzdGFydFN1YlN0cjtcclxuICAgICAgc3RhcnRTdWJTdHIgPSBTdHJVdGlsLmluZGV4T2Yoc3RyLCBmcm9tQ29weSwgbGFzdFN1YlN0ciwgU0FSaW5kZXgpO1xyXG4gICAgICBzYXJJbmRleCA9IFNBUmluZGV4LnZhbHVlO1xyXG4gICAgICB9O1xyXG4gICAgdG1wQnVmLkFwcGVuZChzdHIuc3Vic3RyKGxhc3RTdWJTdHIpKTtcclxuICAgIHJlc3VsdCA9IHRtcEJ1Zi5Ub1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHRoaXMgZnVuY3Rpb25zIGlzIGZvciB1c2UgYnkgdGhlIHNlYXJjaEFuZFJlcGxhY2UoKSBmdW5jdGlvbiAtXHJcbiAgLy8vIHNlYXJjaGVzIHRoZSBvZmZzZXQgb2YgdGhlIHN0cmluZ3MgZnJvbSB0aGUgYXJyYXkgaW4gdGhlIGdpdmVuIHN0cmluZ1xyXG4gIC8vLyBhbmQgcmV0dXJucyB0aGUgbWluaW11bSBvZmZzZXQgZm91bmQgYW5kIHNldHMgdGhlIGluZGV4IG9mIHRoZSBmb3VuZCBzdHJpbmdcclxuICAvLy8gdG8gU0FSaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clwiPnRoZSBzdHJpbmcgdG8gc2VhcmNoIGluIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyaW5nc1wiPmFuIGFycmF5IG9mIHN0cmluZ3MgdG8gc2VhcmNoIGZvciA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFwiPndoZXJlIHRvIHN0YXJ0IHRoZSBzZWFyY2ggPC9wYXJhbT5cclxuICBwcml2YXRlIHN0YXRpYyBpbmRleE9mKHN0cjogc3RyaW5nLCBzdHJpbmdzOiBzdHJpbmdbXSwgb2Zmc2V0OiBudW1iZXIsIFNBUmluZGV4OiBSZWZQYXJhbTxudW1iZXI+KTogbnVtYmVyIHtcclxuICAgIGxldCBtaW5PZmZzZXQ6IG51bWJlciA9IC0xO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN0cmluZ3MubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgaWYgKCEoc3RyaW5nc1tpXSA9PT0gbnVsbCkpIHtcclxuICAgICAgICBsZXQgcmVzdWx0T2Zmc2V0OiBudW1iZXIgPSBzdHIuaW5kZXhPZihzdHJpbmdzW2ldLCBvZmZzZXQpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0T2Zmc2V0ID09PSAtMSkge1xyXG4gICAgICAgICAgc3RyaW5nc1tpXSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHJlc3VsdE9mZnNldCA8IG1pbk9mZnNldCB8fCBtaW5PZmZzZXQgPT09IC0xKSB7XHJcbiAgICAgICAgICAgIG1pbk9mZnNldCA9IHJlc3VsdE9mZnNldDtcclxuICAgICAgICAgICAgU0FSaW5kZXgudmFsdWUgPSBpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIGlmIChtaW5PZmZzZXQgPiAtMSkge1xyXG4gICAgICByZXN1bHQgPSBtaW5PZmZzZXQ7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgU0FSaW5kZXgudmFsdWUgPSAtMTtcclxuICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiByZXBsYWNlIHRva2VucyBpbiB1c2VyIHN0cmluZyBieSB2ZWN0b3IgdmFsdWVzIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ1c2VyU3RyaW5nXCI+LSB1c2VyIGJ1ZmZlciBsaWtlIFwiVXNlciAlZCwgJWQgc3RyaW5nXCJcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0b2tlblwiPi0gdG9rZW4gdXNlZCBpbiB1c2VyIHN0cmluZyAtIGkuZS4gXCIlZFwiXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2NjdXJyZW5jZVwiPi0gbnVtYmVyIG9mIHRva2VuIHdoZXJlIHJlcGxhY2Ugd2lsbCB0YWtlIHBhcnQgKDEgZm9yIGZpcnN0IG9jY3VycmVuY2UpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsdWVcIj4tIHZhbHVlIHRvIGJlIGluc2VydGVkIGluc3RlZCBvZiB0b2tlblxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHN0YXRpYyByZXBsYWNlU3RyaW5nVG9rZW5zKHVzZXJTdHJpbmc6IHN0cmluZywgdG9rZW46IHN0cmluZywgb2NjdXJyZW5jZTogbnVtYmVyLCB2YWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgdG9rZW5MZW46IG51bWJlciA9IHRva2VuLmxlbmd0aDtcclxuICAgIGxldCBjdXJyUG9zaXRpb246IG51bWJlciA9IDA7XHJcbiAgICBsZXQgbmV3U3RyaW5nOiBzdHJpbmcgPSB1c2VyU3RyaW5nO1xyXG5cclxuICAgIGlmICh2YWwgIT09IG51bGwpIHtcclxuICAgICAgbGV0IG51bTI6IG51bWJlciA9IDA7XHJcbiAgICAgIHdoaWxlIChudW0yIDwgb2NjdXJyZW5jZSAmJiBjdXJyUG9zaXRpb24gIT09IC0xKSB7XHJcbiAgICAgICAgY3VyclBvc2l0aW9uID0gdXNlclN0cmluZy5pbmRleE9mKHRva2VuLCBjdXJyUG9zaXRpb24gKyAoKG51bTIgPT09IDApID8gMCA6IHRva2VuTGVuKSk7XHJcbiAgICAgICAgbnVtMiA9IG51bTIgKyAxO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY3VyclBvc2l0aW9uICE9PSAtMSkge1xyXG4gICAgICAgIG5ld1N0cmluZyA9IHVzZXJTdHJpbmcuc3Vic3RyKDAsIGN1cnJQb3NpdGlvbikgKyB2YWwgKyB1c2VyU3RyaW5nLnN1YnN0cihjdXJyUG9zaXRpb24gKyB0b2tlbkxlbiwgdXNlclN0cmluZy5sZW5ndGggLSAoY3VyclBvc2l0aW9uICsgdG9rZW5MZW4pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1N0cmluZztcclxuICB9XHJcblxyXG4gIHN0YXRpYyBtYWtlUHJpbnRhYmxlVG9rZW5zKHNvdXJjZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBzdHJpbmc7XHJcbiAgc3RhdGljIG1ha2VQcmludGFibGVUb2tlbnMoc291cmNlOiBzdHJpbmcsIHR5cGU6IG51bWJlcik6IHN0cmluZztcclxuICBzdGF0aWMgbWFrZVByaW50YWJsZVRva2Vucyhzb3VyY2U6IExpc3Q8c3RyaW5nPiwgdHlwZTogbnVtYmVyKTogc3RyaW5nO1xyXG4gIHN0YXRpYyBtYWtlUHJpbnRhYmxlVG9rZW5zKHNvdXJjZTogYW55LCB0eXBlOiBhbnkpOiBzdHJpbmcgfCB2b2lke1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHNvdXJjZSA9PT0gbnVsbCB8fCBzb3VyY2UuY29uc3RydWN0b3IgPT09IFN0cmluZykgJiYgKHR5cGUgPT09IG51bGwgfHwgdHlwZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSkge1xyXG4gICAgICByZXR1cm4gU3RyVXRpbC5tYWtlUHJpbnRhYmxlVG9rZW5zXzAoc291cmNlLCB0eXBlKTtcclxuICAgIH1cclxuICAgIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vuc18xKHNvdXJjZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29udmVydHMgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgdG9rZW4gdG8gYSBwcmludGFibGUgZm9ybWF0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInNvdXJjZVwiPmEgdG9rZW4gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGVcIj50eXBlIG9mIGNvbnZlcnNpb246IFNUUl8yX0hUTUwsIFNFUV8yX0hUTUwsIEhUTUxfMl9TRVEsIEhUTUxfMl9TVFIsIFNFUV8yX1NUUiA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdG9rZW4gd2l0aCBjb252ZXJ0ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzIDwvcmV0dXJucz5cclxuICBzdGF0aWMgbWFrZVByaW50YWJsZVRva2Vuc18wKHNvdXJjZTogc3RyaW5nLCB0eXBlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGVzY1N0cjogc3RyaW5nW10gPSBbXHJcbiAgICAgIFwiXFxcXFwiLCBcIi1cIiwgXCIsXCJcclxuICAgIF07XHJcbiAgICBsZXQgZXNjU2VxOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJcXFxcXFxcXFwiLCBcIlxcXFwtXCIsIFwiXFxcXCxcIlxyXG4gICAgXTtcclxuICAgIGxldCBlc2NIdG06IHN0cmluZ1tdID0gW1xyXG4gICAgICBIVE1MX0JBQ0tTTEFTSCwgSFRNTF9IWVBIRU4sIEhUTUxfQ09NTUFcclxuICAgIF07XHJcbiAgICBsZXQgcmVzdWx0OiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSBTVFJfMl9IVE1MOlxyXG4gICAgICAgIHJlc3VsdCA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIGVzY1N0ciwgZXNjSHRtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTRVFfMl9IVE1MOlxyXG4gICAgICAgIHJlc3VsdCA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIGVzY1NlcSwgZXNjSHRtKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBIVE1MXzJfU0VROlxyXG4gICAgICAgIHJlc3VsdCA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIGVzY0h0bSwgZXNjU2VxKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBIVE1MXzJfU1RSOlxyXG4gICAgICAgIHJlc3VsdCA9IFN0clV0aWwuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIGVzY0h0bSwgZXNjU3RyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBTRVFfMl9TVFI6XHJcbiAgICAgICAgcmVzdWx0ID0gU3RyVXRpbC5zZWFyY2hBbmRSZXBsYWNlKHNvdXJjZSwgZXNjU2VxLCBlc2NTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJlc3VsdCA9IHNvdXJjZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNvbnZlcnRzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBhIHRva2VucyBjb2xsZWN0aW9uIHRvIGEgcHJpbnRhYmxlIGZvcm1hdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzb3VyY2VcIj52ZWN0b3Igb2Ygc3RyaW5ncyBiZWZvcmUgdG9rZW5haXplciA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHlwZVwiPnR5cGUgb2YgY29udmVyc2lvbjogU1RSXzJfSFRNTCwgU0VRXzJfSFRNTCwgSFRNTF8yX1NFUSwgSFRNTF8yX1NUUiA8L3BhcmFtPlxyXG4gIHByaXZhdGUgc3RhdGljIG1ha2VQcmludGFibGVUb2tlbnNfMShzb3VyY2U6IExpc3Q8c3RyaW5nPiwgdHlwZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoc291cmNlICE9PSBudWxsKSB7XHJcbiAgICAgIGxldCBsZW5ndGg6IG51bWJlciA9IHNvdXJjZS5sZW5ndGg7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIGxldCBjdXJyRWxtOiBzdHJpbmcgPSBzb3VyY2UuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgICAgc291cmNlLnNldF9JdGVtKGksIFN0clV0aWwubWFrZVByaW50YWJsZVRva2Vuc18wKGN1cnJFbG0sIHR5cGUpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNoYW5nZSBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMgbGlrZSBcIm5ldyBsaW5lXCIgYW5kIFwibGluZSBmZWVkXCIgdG8gdGhlaXJcclxuICAvLy8gICBwcmludGFibGUgcmVwcmVzZW50YXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic291cmNlXCI+aXMgdGhlIHN0cmluZyB3aXRoIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIG5ldyBzdHJpbmcgd2hlcmUgYWxsIHRoZSBub24tcHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlIGNvbnZlcnRlZCA8L3JldHVybnM+XHJcbiAgc3RhdGljIG1ha2VQcmludGFibGUoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZyb206IHN0cmluZ1tdID0gW1xyXG4gICAgICBcIlxcblwiLCBcIlxcclwiLCBcIidcIiwgXCJcXFxcXCIsIFwiXFxcIlwiLCBcIlxcMFwiXHJcbiAgICBdO1xyXG4gICAgbGV0IHRvOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJcXFxcblwiLCBcIlxcXFxyXCIsIFwiXFxcXCdcIiwgXCJcXFxcXFxcXFwiLCBcIlxcXFxcXFwiXCIsIFwiXFxcXDBcIlxyXG4gICAgXTtcclxuICAgIHJldHVybiBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBmcm9tLCB0byk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2hhbmdlIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyBsaWtlIFwibmV3IGxpbmVcIiBhbmQgXCJsaW5lIGZlZWRcIiB0byB0aGVpclxyXG4gIC8vLyAgIHByaW50YWJsZSByZXByZXNlbnRhdGlvbiAoc2ltcGxpZmllZCB2ZXJzaW9uIGZvciByYW5nZSBlcnJvciBtZXNzYWdlKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzb3VyY2VcIj5pcyB0aGUgc3RyaW5nIHdpdGggbm9uLXByaW50YWJsZSBjaGFyYWN0ZXJzIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgbmV3IHN0cmluZyB3aGVyZSBhbGwgdGhlIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyBhcmUgY29udmVydGVkIDwvcmV0dXJucz5cclxuICBzdGF0aWMgbWFrZVByaW50YWJsZTIoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IGZyb206IHN0cmluZ1tdID0gW1xyXG4gICAgICBcIlxcblwiLCBcIlxcclwiLCBcIlxcMFwiXHJcbiAgICBdO1xyXG4gICAgbGV0IHRvOiBzdHJpbmdbXSA9IFtcclxuICAgICAgXCJcXFxcblwiLCBcIlxcXFxyXCIsIFwiXFxcXDBcIlxyXG4gICAgXTtcclxuICAgIHJldHVybiBTdHJVdGlsLnNlYXJjaEFuZFJlcGxhY2Uoc291cmNlLCBmcm9tLCB0byk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW5cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIFpzdHJpbmdNYWtlKHM6IHN0cmluZywgbGVuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGVuID0gU3RyVXRpbC5tZW1fdHJpbShzLCBsZW4pO1xyXG4gICAgcmV0dXJuIHMuc3Vic3RyKDAsIGxlbik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+KHB1YmxpYylcclxuICAvLy8gcmV0dXJucyBwbGFpbiB0ZXh0IGZyb20gcnRmIHRleHRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJ0ZlRleHRcIj5yZWZlciB0byB0aGUgc3VtbWFyeTwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnJlZmVyIHRvIHRoZSBzdW1tYXJ5PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRQbGFpblRleHRmcm9tUnRmKHJ0ZlRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoUnRmLmlzUnRmKHJ0ZlRleHQpKSB7XHJcbiAgICAgIGxldCBydGY6IFJ0ZiA9IG5ldyBSdGYoKTtcclxuICAgICAgbGV0IG91dHB1dFR4dDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKFwiXCIpO1xyXG4gICAgICBydGYudG9UeHQocnRmVGV4dCwgb3V0cHV0VHh0KTtcclxuICAgICAgcnRmVGV4dCA9IG91dHB1dFR4dC5Ub1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJ0ZlRleHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RyaW5nIGFycmF5cyBzdHIxICYgc3RyMiBhcmUgZXF1YWxcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjFcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIFN0cmluZ3NBcnJheXNFcXVhbChzdHIxOiBzdHJpbmdbXSwgc3RyMjogc3RyaW5nW10pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW47XHJcbiAgICBpZiAoc3RyMSA9PT0gbnVsbCAmJiBzdHIyID09PSBudWxsKSB7XHJcbiAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0cjEgPT09IG51bGwgfHwgc3RyMiA9PT0gbnVsbCkge1xyXG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChzdHIxLmxlbmd0aCAhPT0gc3RyMi5sZW5ndGgpIHtcclxuICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGluZGV4OiBudW1iZXIgPSAwOyBpbmRleCA8IDxudW1iZXI+c3RyMS5sZW5ndGg7IGluZGV4ID0gaW5kZXggKyAxKSB7XHJcbiAgICAgICAgICAgIGlmICgoc3RyMVtpbmRleF0gIT09IHN0cjJbaW5kZXhdKSkge1xyXG4gICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBUaGUgY29kZSBpcyBjb3BpZWQgZnJvbSB0c2tfb3Blbl9ibmRfd2lsZCBhbmQgU2VhcmNoQW5kUmVwbGFjZVdpbGRDaGFyc1xyXG4gIC8vLyBUaGUgcmVmYWN0b3JpbmcgaXMgbm90IHBlcmZvcm1lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcclxuICAvLy8gVGhlIGNvZGUgcmVwbGFjZXMgc3BlY2lhbCBjaGFyYWNodGVycyA6KiA/IHdpdGggcmVjaWV2ZWQgZmlsbGVyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTZWFyY2hBbmRSZXBsYWNlV2lsZENoYXJzKGJ1Zjogc3RyaW5nLCBsZW46IG51bWJlciwgZmlsbGVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgYnVmID0gTlN0cmluZy5QYWRSaWdodChidWYsIGxlbik7XHJcblxyXG4gICAgbGV0IGVzY0NoYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBzdG9wU2VhcmNoOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgdG1wQnVmOiBTdHJpbmdCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIobGVuKTtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsZW47IGkgPSBpICsgMSkge1xyXG4gICAgICBzd2l0Y2ggKGJ1ZltpXSkge1xyXG4gICAgICAgIGNhc2UgKCdcXFxcJyk6IHtcclxuICAgICAgICAgIGxldCBpc05leHRDaGFyV2lsZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgICAgICAgLy9JZiBuZXh0IGNoYXIgaXMgbm90IHdpbGQgLCB0aGVuIGNvcHkgJ1xcJywgaWYgdGhpcyBpcyBmaXJzdCBjaGFyLlxyXG4gICAgICAgICAgaWYgKChpICsgMSA8IGxlbikgJiYgKGJ1ZltpICsgMV0gIT0gJyonICYmIGJ1ZltpICsgMV0gIT0gJ1xcXFwnKSlcclxuICAgICAgICAgICAgaXNOZXh0Q2hhcldpbGQgPSBmYWxzZTtcclxuICAgICAgICAgIGlmIChlc2NDaGFyIHx8ICFpc05leHRDaGFyV2lsZClcclxuICAgICAgICAgICAgdG1wQnVmLkFwcGVuZChidWZbaV0pO1xyXG4gICAgICAgICAgZXNjQ2hhciA9ICFlc2NDaGFyO1xyXG4gICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgKCcqJyk6XHJcbiAgICAgICAgICBpZiAoZXNjQ2hhcilcclxuICAgICAgICAgICAgdG1wQnVmLkFwcGVuZChidWZbaV0pO1xyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRtcEJ1Zi5BcHBlbmQoZmlsbGVyLCBsZW4gLSB0bXBCdWYuTGVuZ3RoKTtcclxuICAgICAgICAgICAgc3RvcFNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlc2NDaGFyID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICc/JzpcclxuICAgICAgICAgIHRtcEJ1Zi5BcHBlbmQoZmlsbGVyKTtcclxuICAgICAgICAgIGVzY0NoYXIgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICB0bXBCdWYuQXBwZW5kKGJ1ZltpXSk7XHJcbiAgICAgICAgICBlc2NDaGFyID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSB0bXBCdWYuVG9TdHJpbmcoKTtcclxuICAgIHJldHVybiBOU3RyaW5nLlRyaW1FbmQoTlN0cmluZy5UcmltRW5kKHRleHQsIFsnXFwwJ10pKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmVtb3ZlIHRoZSB0YXNrIHBhdGggZGVsaW1pdGVyIGZyb20gdGhlIGVycm9yIHN0cmluZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic291cmNlXCI+c3RyaW5nIHdpdGggZGVsaW1pdGVyIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBzdHJpbmcgZm9yIGNvbnNvbGUgZXJyb3IgPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRDb25zb2xlRXJvclN0cmluZyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgY29uc29sZUVyb3JTdHJpbmc6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChzb3VyY2UpKVxyXG4gICAgICBjb25zb2xlRXJvclN0cmluZyA9IHRoaXMuc2VhcmNoQW5kUmVwbGFjZShzb3VyY2UsIFRBU0tfUEFUSF9ERUxJTUlURVIsIFwiXCIpO1xyXG5cclxuICAgIHJldHVybiBjb25zb2xlRXJvclN0cmluZztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmVtb3ZlIHRoZSB0YXNrIHBhdGggZnJvbSB0aGUgZXJyb3Igc3RyaW5nLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzb3VyY2VcIj5zdHJpbmcgd2l0aCBkZWxpbWl0ZXIgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHN0cmluZyBmb3IgY29uc29sZSBlcnJvciA8L3JldHVybnM+XHJcbiAgc3RhdGljIGdldE1zZ0JveEVyb3JTdHJpbmcoc291cmNlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHRva2Vuczogc3RyaW5nIFtdO1xyXG4gICAgbGV0IG1zZ0JveEVyb3JTdHJpbmc6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihcIlwiKTtcclxuXHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHNvdXJjZSkpe1xyXG4gICAgICB0b2tlbnMgPSB0aGlzLnRva2VuaXplKHNvdXJjZSwgVEFTS19QQVRIX0RFTElNSVRFUik7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOm51bWJlciA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspXHJcbiAgICAgIHtcclxuICAgICAgICBtc2dCb3hFcm9yU3RyaW5nLkFwcGVuZCh0b2tlbnNbaV0pO1xyXG4gICAgICAgIGkrKztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgcmV0dXJuIG1zZ0JveEVyb3JTdHJpbmcudG9TdHJpbmcoKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -20,4 +20,4 @@ export class SyncExecutionHelper {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
SyncExecutionHelper._instance = null;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3luY0V4ZWN1dGlvbkhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3V0aWxzL3NyYy9TeW5jRXhlY3V0aW9uSGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sT0FBTyxtQkFBbUI7SUFBaEM7UUFlVSxhQUFRLEdBQVEsSUFBSSxDQUFDO0lBc0IvQixDQUFDO0lBOUJDLE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksbUJBQW1CLENBQUMsU0FBUyxLQUFLLElBQUk7WUFDeEMsbUJBQW1CLENBQUMsU0FBUyxHQUFHLElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUU1RCxPQUFPLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBUU0sSUFBSTtRQUVULE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFLTSxLQUFLO1FBQ1YsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QixJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFFcEIsUUFBUSxFQUFFLENBQUM7U0FDWjtJQUNILENBQUM7O0FBbENjLDZCQUFTLEdBQUcsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxzdW1tYXJ5PlxyXG4vLy8gSGVscGVyIGNsYXNzIGZvciBzeW5jaHJvbml6ZWQgZXhlY3V0aW9uLlxyXG4vLy8gSXQgd29ya3MgYnkgY3JlYXRpbmcgYSBwcm9taXNlIGFuZCB0aGVuIHdhaXRpbmcgZm9yIHRoZSBwcm9taXNlIHRvIGJlIGNvbXBsZXRlZFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgU3luY0V4ZWN1dGlvbkhlbHBlciB7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZSA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZ2V0IGluc3RhbmNlIG9mIFN5bmNFeGVjdXRpb25IZWxwZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogU3luY0V4ZWN1dGlvbkhlbHBlciB7XHJcbiAgICBpZiAoU3luY0V4ZWN1dGlvbkhlbHBlci5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIFN5bmNFeGVjdXRpb25IZWxwZXIuX2luc3RhbmNlID0gbmV3IFN5bmNFeGVjdXRpb25IZWxwZXIoKTtcclxuXHJcbiAgICByZXR1cm4gU3luY0V4ZWN1dGlvbkhlbHBlci5faW5zdGFuY2U7XHJcbiAgfVxyXG5cclxuICAvLyByZXNvbHZlciBpcyBjYWxsZXIgd2hlbiBwcm9taXNlIGlzIGZ1bGxmaWxsZWRcclxuICBwcml2YXRlIHJlc29sdmVyOiBhbnkgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRvIHdhaXQsIGNyZWF0ZSBhIHByb21pc2UgYW5kIGFkZCB3YWl0IGZvciBpdCB0byBjb21wbGV0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIFdhaXQoKTogYW55IHtcclxuICAgIC8vIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKFwiU3luY0V4ZWN1dGlvbkhlbHBlci5XYWl0KClcIik7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5yZXNvbHZlciA9IHJlc29sdmU7XHJcbiAgICB9KS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFRvIHJlc3VtZSBjYWxsIHRoZSByZXNvbHZlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIFB1bHNlKCkge1xyXG4gICAgbGV0IHJlc29sdmVyID0gdGhpcy5yZXNvbHZlcjtcclxuICAgIGlmIChyZXNvbHZlciAhPSBudWxsKSB7XHJcbiAgICAgIC8vIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKFwiU3luY0V4ZWN1dGlvbkhlbHBlci5QdWxzZSgpXCIpO1xyXG4gICAgICByZXNvbHZlcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|