Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cdn
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
llewan
cdn
Commits
5a8dfc77
Commit
5a8dfc77
authored
Jun 25, 2019
by
liurufeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
7bb8bffa
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
4 additions
and
4 deletions
+4
-4
bundle.js
demoproject/h5/demo_v0.1/js/bundle.js
+4
-4
No files found.
demoproject/h5/demo_v0.1/js/bundle.js
View file @
5a8dfc77
...
@@ -21,9 +21,9 @@ var GameConfig = /** @class */ (function () {
...
@@ -21,9 +21,9 @@ var GameConfig = /** @class */ (function () {
GameConfig
.
init
=
function
()
{
GameConfig
.
init
=
function
()
{
var
reg
=
Laya
.
ClassUtils
.
regClass
;
var
reg
=
Laya
.
ClassUtils
.
regClass
;
};
};
GameConfig
.
width
=
640
;
GameConfig
.
width
=
1334
;
GameConfig
.
height
=
1136
;
GameConfig
.
height
=
750
;
GameConfig
.
scaleMode
=
"fixed
width
"
;
GameConfig
.
scaleMode
=
"fixed
auto
"
;
GameConfig
.
screenMode
=
"none"
;
GameConfig
.
screenMode
=
"none"
;
GameConfig
.
alignV
=
"top"
;
GameConfig
.
alignV
=
"top"
;
GameConfig
.
alignH
=
"left"
;
GameConfig
.
alignH
=
"left"
;
...
@@ -483,4 +483,4 @@ var OrbitCamera = /** @class */ (function (_super) {
...
@@ -483,4 +483,4 @@ var OrbitCamera = /** @class */ (function (_super) {
}(
Laya
.
Script3D
));
}(
Laya
.
Script3D
));
exports
.
OrbitCamera
=
OrbitCamera
;
exports
.
OrbitCamera
=
OrbitCamera
;
},{
"./MathHelper"
:
3
}]},{},[
2
])
},{
"./MathHelper"
:
3
}]},{},[
2
])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkQ6L1Byb2dyYW0gRmlsZXMgKHg4NikvTGF5YUFpcklERV9iZXRhMi4xLjBiZXRhMS9yZXNvdXJjZXMvYXBwL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvR2FtZUNvbmZpZy50cyIsInNyYy9NYWluLnRzIiwic3JjL01hdGhIZWxwZXIudHMiLCJzcmMvT3JiaXRDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQSxnR0FBZ0c7O0FBRWhHOztFQUVFO0FBQ0Y7SUFhSTtJQUFjLENBQUM7SUFDUixlQUFJLEdBQVg7UUFDSSxJQUFJLEdBQUcsR0FBYSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUVqRCxDQUFDO0lBaEJNLGdCQUFLLEdBQVEs
R0FBRyxDQUFDO0lBQ2pCLGlCQUFNLEdBQVEsSUFBSSxDQUFDO0lBQ25CLG9CQUFTLEdBQVEsWUFBWSxDQUFDO0lBQzlCLHFCQUFVLEdBQVEsTUFBTSxDQUFDO0lBQ3pCLGlCQUFNLEdBQVEsS0FBSyxDQUFDO0lBQ3BCLGlCQUFNLEdBQVEsTUFBTSxDQUFDO0lBQ3JCLHFCQUFVLEdBQUssRUFBRSxDQUFDO0lBQ2xCLG9CQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLGdCQUFLLEdBQVMsS0FBSyxDQUFDO0lBQ3BCLGVBQUksR0FBUyxLQUFLLENBQUM7SUFDbkIsdUJBQVksR0FBUyxLQUFLLENBQUM7SUFDM0IsNEJBQWlCLEdBQVMsSUFBSSxDQUFDO0lBTTFDLGlCQUFDO0NBbEJELEFBa0JDLElBQUE7a0JBbEJvQixVQUFVO0FBbUIvQixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Ozs7QUN4QmxCLDJDQUFzQztBQUN0Qyw2Q0FBNEM7QUFDNUM7SUFDQztRQXFCUSxhQUFRLEdBQVcsb0NBQW9DLENBQUM7UUFwQi9ELGdCQUFnQjtRQUNoQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFVLENBQUMsS0FBSyxFQUFFLG9CQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7O1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQVUsQ0FBQyxLQUFLLEVBQUUsb0JBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLG9CQUFVLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsVUFBVSxDQUFDO1FBQzlDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixHQUFHLG9CQUFVLENBQUMsaUJBQWlCLENBQUM7UUFFMUQsb0RBQW9EO1FBQ3BELElBQUksb0JBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTTtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzlGLElBQUksb0JBQVUsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0YsSUFBSSxvQkFBVSxDQUFDLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFFN0IsZ0RBQWdEO1FBQ2hELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNySSxDQUFDO0lBS0QsOEJBQWUsR0FBZjtRQUNDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUE7SUFDdEYsQ0FBQztJQUVPLGtDQUFtQixHQUEzQixVQUE0QixLQUFLO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQWdCLENBQUM7UUFDcEYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMseUJBQVcsQ0FBZ0IsQ0FBQztRQUNqRSxLQUFLLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUYsV0FBQztBQUFELENBdkNBLEFBdUNDLElBQUE7QUFDRCxPQUFPO0FBQ1AsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7OztBQzNDWDtJQUNJO0lBRUEsQ0FBQztJQVNEOztPQUVHO0lBQ1csdUJBQVksR0FBMUIsVUFBMkIsRUFBZ0IsRUFBRSxFQUFnQjtRQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ3RDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7T0FFRztJQUNXLHVCQUFZLEdBQTFCLFVBQTJCLE1BQWM7UUFDckMsSUFBSSxFQUFFLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuRCxJQUFJLEVBQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLEVBQUUsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELElBQUksRUFBRSxHQUFpQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNwRCxnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuQyxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFYSxzQkFBVyxHQUF6QixVQUEwQixHQUFXLEVBQUUsR0FBVztRQUM5QyxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0MsQ0FBQztJQUVEOztTQUVLO0lBQ1MsaUJBQU0sR0FBcEIsVUFBcUIsR0FBVyxFQUFFLEdBQVc7UUFDekMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDN0QsQ0FBQztJQUVEOztPQUVHO0lBQ1cscUJBQVUsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXO1FBQzVELElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNiLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDZjthQUNJLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNsQixLQUFLLEdBQUcsR0FBRyxDQUFDO1NBQ2Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDVyxnQkFBSyxHQUFuQixVQUFvQixLQUFhLEVBQUUsR0FBVyxFQUFFLEdBQVc7UUFDdkQsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2IsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUNmO2FBQ0ksSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLEtBQUssR0FBRyxHQUFHLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFYSxrQkFBTyxHQUFyQjtRQUNJLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7WUFDdEUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFYSwyQkFBZ0IsR0FBOUIsVUFBK0IsQ0FBUyxFQUFFLE1BQWtCO1FBQWxCLHVCQUFBLEVBQUEsVUFBa0I7UUFDeEQsSUFBSSxNQUFjLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ2IsSUFBSSxJQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUVaLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBSSxHQUFHLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsR0FBRyxJQUFJLEVBQUU7Z0JBQ1YsTUFBTTthQUNUO1lBQ0QsSUFBSSxJQUFJLENBQUMsQ0FBQztTQUNiO1FBQ0QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO1lBQ1QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3ZGO2FBQ0k7WUFDRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDcEs7UUFDRCxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQzVILENBQUM7SUFFYSx3QkFBYSxHQUEzQjtRQUNJLElBQUksT0FBTyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxJQUFJLEdBQVcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxHQUFXLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLEdBQVcsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLElBQUksR0FBRyxHQUFXLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNuQyxJQUFJLElBQUksR0FBVyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEMsSUFBSSxNQUFNLEdBQVcsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzFDLElBQUksTUFBTSxHQUFXLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFVBQVUsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNsRyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRUQsUUFBUTtJQUNNLHlCQUFjLEdBQTVCLFVBQTZCLEVBQVUsRUFBRSxFQUFVO1FBQy9DLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLENBQUM7YUFDWjtpQkFBTSxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUU7Z0JBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFFYjtTQUNKO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRWEsb0JBQVMsR0FBdkIsVUFBd0IsSUFBWTtRQUNoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRXZCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRWEsbUJBQVEsR0FBdEIsVUFBdUIsRUFBVSxFQUFFLEVBQVU7UUFDekMsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRWEsa0JBQU8sR0FBckI7UUFDSSxJQUFJLE9BQU8sR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksSUFBSSxHQUFXLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QyxJQUFJLEtBQUssR0FBVyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLElBQUksSUFBSSxHQUFXLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNyQyxJQUFJLEtBQUssR0FBRyxFQUFFLEVBQUU7U0FFZjtRQUNELElBQUksVUFBVSxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RyxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRWEsd0JBQWEsR0FBM0IsVUFBNEIsR0FBRyxFQUFFLE1BQU07UUFDbkMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQXhLRDs7T0FFRztJQUNXLGtCQUFPLEdBQVcsVUFBVSxDQUFDO0lBQzNDOztPQUVHO0lBQ1csa0JBQU8sR0FBVyxRQUFRLENBQUM7SUFrSzdDLGlCQUFDO0NBN0tELEFBNktDLElBQUE7QUE3S1ksZ0NBQVU7OztBQ0F2Qjs7O0VBR0U7O0FBRUYsSUFBTyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7QUFDL0MsSUFBTyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQzVDLElBQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDMUIsMkNBQTBDO0FBQzFDO0lBQWlDLCtCQUFhO0lBRTFDO1FBQUEsWUFDSSxpQkFBTyxTQUNWO1FBQ2dCLFlBQU0sR0FBVyxHQUFHLENBQUM7UUFHL0IsaUJBQVcsR0FBVyxDQUFDLENBQUM7UUFDeEIsZ0JBQVUsR0FBVyxDQUFDLENBQUM7UUFDdkIsZUFBUyxHQUFXLENBQUMsR0FBRyxDQUFDO1FBQ3pCLGVBQVMsR0FBVyxHQUFHLENBQUM7UUFDeEIsY0FBUSxHQUFXLEVBQUUsQ0FBQztRQUN0QixpQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixpQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGdCQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFLbEIsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixZQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQUssR0FBVyxDQUFDLENBQUM7UUFDbEIsV0FBSyxHQUFXLENBQUMsQ0FBQztRQUNsQixZQUFNLEdBQVksS0FBSyxDQUFDO1FBQ3hCLFlBQU0sR0FBVyxDQUFDLENBQUM7UUFDbkIsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUNuQixhQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLG9CQUFjLEdBQWUsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsa0JBQVksR0FBVyxDQUFDLENBQUM7UUFDekIsdUJBQWlCLEdBQVcsQ0FBQyxDQUFDO1FBbUM5QixtQkFBYSxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQVd4RCxRQUFFLEdBQWlCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDOztJQTFFdEMsQ0FBQztJQThCRCw2QkFBTyxHQUFQO1FBQ0ksSUFBSSxDQUFDLEtBQUssR0FBSSxJQUFJLENBQUMsS0FBdUIsQ0FBQyxTQUFTLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrQkFBUyxHQUFUO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVNLGlDQUFXLEdBQWxCO1FBQ0ksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU0saUNBQVcsR0FBbEIsVUFBbUIsQ0FBUyxFQUFFLENBQVMsRUFBRSxRQUF5QjtRQUF6Qix5QkFBQSxFQUFBLGdCQUF5QjtRQUM5RCxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEssSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFJLElBQUksUUFBUSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7WUFDdkIsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN2SSxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQztpQkFDMUMsVUFBVSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUN0RDthQUFNO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztTQUN4RDtJQUNMLENBQUM7SUFFTywyQ0FBcUIsR0FBN0IsVUFBOEIsS0FBOEI7UUFDeEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3pELENBQUM7SUFFTyw2Q0FBdUIsR0FBL0I7UUFDSSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBR0QsOEJBQVEsR0FBUjtRQUNJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUVELHFCQUFxQjtRQUNyQix1RUFBdUU7UUFDdkUsc0VBQXNFO1FBQ3RFLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFFeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzlCO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDOUI7UUFDRCxzQ0FBc0M7UUFDdEMsbUNBQW1DO1FBQ25DLFdBQVc7UUFDWCxtQ0FBbUM7UUFDbkMsSUFBSTtRQUNKLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUczQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsa0NBQVksR0FBWjtRQUNJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTztTQUFFO1FBQzlDLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFFckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRU8sa0NBQVksR0FBcEI7UUFDSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDYiw4RUFBOEU7WUFDOUUsVUFBVSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FDeEQ7SUFFTCxDQUFDO0lBRU8sZ0NBQVUsR0FBbEI7UUFDSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzdDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN6RjtJQUNMLENBQUM7SUFFTyxnQ0FBVSxHQUFsQjtRQUNJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFHRCwwQ0FBb0IsR0FBcEIsVUFBcUIsQ0FBUTtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUMvQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLFFBQVEsR0FBVyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM5RCxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsdUJBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELHdDQUFrQixHQUFsQixVQUFtQixDQUFRO1FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUNYLElBQUksT0FBTyxHQUFlLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDcEMsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDbEU7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO2dCQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQzthQUN2RTtTQUNKO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFFekIsQ0FBQztJQUVELHNDQUFnQixHQUFoQjtRQUNJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQy9CLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsd0NBQWtCLEdBQWxCLFVBQW1CLENBQVE7UUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDL0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxPQUFPLEdBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNwQyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtnQkFDaEMsSUFBSSxRQUFRLEdBQVcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25ELElBQU0sTUFBTSxHQUFXLElBQUksQ0FBQztnQkFDNUIsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLHVCQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3BGLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO2dCQUM3QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUMvRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsdUJBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDckY7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO29CQUNwQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7d0JBQzVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3FCQUN2QjtvQkFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztpQkFDekI7YUFDSjtTQUNKO2FBQU07WUFFSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ3hELElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUM1RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztpQkFDdkI7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDMUMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQzthQUM3QztTQUNKO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtJQUNULGlDQUFXLEdBQW5CLFVBQW9CLE1BQWtCO1FBQ2xDLElBQUksUUFBUSxHQUFXLENBQUMsQ0FBQztRQUN6QixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtZQUM5QixJQUFJLEVBQUUsR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckQsSUFBSSxFQUFFLEdBQVcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3JELFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUNMLGtCQUFDO0FBQUQsQ0FwUEEsQUFvUEMsQ0FwUGdDLElBQUksQ0FBQyxRQUFRLEdBb1A3QztBQXBQWSxrQ0FBVyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxuICAgIH07XHJcbn0pKCk7XHJcbihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvKipUaGlzIGNsYXNzIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IExheWFBaXJJREUsIHBsZWFzZSBkbyBub3QgbWFrZSBhbnkgbW9kaWZpY2F0aW9ucy4gKi9cclxuXHJcbi8qXHJcbiog5ri45oiP5Yid5aeL5YyW6YWN572uO1xyXG4qL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYW1lQ29uZmlne1xyXG4gICAgc3RhdGljIHdpZHRoOm51bWJlcj02NDA7XHJcbiAgICBzdGF0aWMgaGVpZ2h0Om51bWJlcj0xMTM2O1xyXG4gICAgc3RhdGljIHNjYWxlTW9kZTpzdHJpbmc9XCJmaXhlZHdpZHRoXCI7XHJcbiAgICBzdGF0aWMgc2NyZWVuTW9kZTpzdHJpbmc9XCJub25lXCI7XHJcbiAgICBzdGF0aWMgYWxpZ25WOnN0cmluZz1cInRvcFwiO1xyXG4gICAgc3RhdGljIGFsaWduSDpzdHJpbmc9XCJsZWZ0XCI7XHJcbiAgICBzdGF0aWMgc3RhcnRTY2VuZTphbnk9XCJcIjtcclxuICAgIHN0YXRpYyBzY2VuZVJvb3Q6c3RyaW5nPVwiXCI7XHJcbiAgICBzdGF0aWMgZGVidWc6Ym9vbGVhbj1mYWxzZTtcclxuICAgIHN0YXRpYyBzdGF0OmJvb2xlYW49ZmFsc2U7XHJcbiAgICBzdGF0aWMgcGh5c2ljc0RlYnVnOmJvb2xlYW49ZmFsc2U7XHJcbiAgICBzdGF0aWMgZXhwb3J0U2NlbmVUb0pzb246Ym9vbGVhbj10cnVlO1xyXG4gICAgY29uc3RydWN0b3IoKXt9XHJcbiAgICBzdGF0aWMgaW5pdCgpe1xyXG4gICAgICAgIHZhciByZWc6IEZ1bmN0aW9uID0gTGF5YS5DbGFzc1V0aWxzLnJlZ0NsYXNzO1xyXG5cclxuICAgIH1cclxufVxyXG5HYW1lQ29uZmlnLmluaXQoKTsiLCJpbXBvcnQgR2FtZUNvbmZpZyBmcm9tIFwiLi9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCB7IE9yYml0Q2FtZXJhIH0gZnJvbSBcIi4vT3JiaXRDYW1lcmFcIjtcclxuY2xhc3MgTWFpbiB7XHJcblx0Y29uc3RydWN0b3IoKSB7XHJcblx0XHQvL+agueaNrklEReiuvue9ruWIneWni+WMluW8leaTjlx0XHRcclxuXHRcdGlmICh3aW5kb3dbXCJMYXlhM0RcIl0pIExheWEzRC5pbml0KEdhbWVDb25maWcud2lkdGgsIEdhbWVDb25maWcuaGVpZ2h0KTtcclxuXHRcdGVsc2UgTGF5YS5pbml0KEdhbWVDb25maWcud2lkdGgsIEdhbWVDb25maWcuaGVpZ2h0LCBMYXlhW1wiV2ViR0xcIl0pO1xyXG5cdFx0TGF5YVtcIlBoeXNpY3NcIl0gJiYgTGF5YVtcIlBoeXNpY3NcIl0uZW5hYmxlKCk7XHJcblx0XHRMYXlhW1wiRGVidWdQYW5lbFwiXSAmJiBMYXlhW1wiRGVidWdQYW5lbFwiXS5lbmFibGUoKTtcclxuXHRcdExheWEuc3RhZ2Uuc2NhbGVNb2RlID0gR2FtZUNvbmZpZy5zY2FsZU1vZGU7XHJcblx0XHRMYXlhLnN0YWdlLnNjcmVlbk1vZGUgPSBHYW1lQ29uZmlnLnNjcmVlbk1vZGU7XHJcblx0XHQvL+WFvOWuueW+ruS/oeS4jeaUr+aMgeWKoOi9vXNjZW5l5ZCO57yA5Zy65pmvXHJcblx0XHRMYXlhLlVSTC5leHBvcnRTY2VuZVRvSnNvbiA9IEdhbWVDb25maWcuZXhwb3J0U2NlbmVUb0pzb247XHJcblxyXG5cdFx0Ly/miZPlvIDosIPor5XpnaLmnb/vvIjpgJrov4dJREXorr7nva7osIPor5XmqKHlvI/vvIzmiJbogIV1cmzlnLDlnYDlop7liqBkZWJ1Zz10cnVl5Y+C5pWw77yM5Z2H5Y+v5omT5byA6LCD6K+V6Z2i5p2/77yJXHJcblx0XHRpZiAoR2FtZUNvbmZpZy5kZWJ1ZyB8fCBMYXlhLlV0aWxzLmdldFF1ZXJ5U3RyaW5nKFwiZGVidWdcIikgPT0gXCJ0cnVlXCIpIExheWEuZW5hYmxlRGVidWdQYW5lbCgpO1xyXG5cdFx0aWYgKEdhbWVDb25maWcucGh5c2ljc0RlYnVnICYmIExheWFbXCJQaHlzaWNzRGVidWdEcmF3XCJdKSBMYXlhW1wiUGh5c2ljc0RlYnVnRHJhd1wiXS5lbmFibGUoKTtcclxuXHRcdGlmIChHYW1lQ29uZmlnLnN0YXQpIExheWEuU3RhdC5zaG93KCk7XHJcblx0XHRMYXlhLmFsZXJ0R2xvYmFsRXJyb3IgPSB0cnVlO1xyXG5cclxuXHRcdC8v5r+A5rS76LWE5rqQ54mI5pys5o6n5Yi277yMdmVyc2lvbi5qc29u55SxSURF5Y+R5biD5Yqf6IO96Ieq5Yqo55Sf5oiQ77yM5aaC5p6c5rKh5pyJ5Lmf5LiN5b2x5ZON5ZCO57ut5rWB56iLXHJcblx0XHRMYXlhLlJlc291cmNlVmVyc2lvbi5lbmFibGUoXCJ2ZXJzaW9uLmpzb25cIiwgTGF5YS5IYW5kbGVyLmNyZWF0ZSh0aGlzLCB0aGlzLm9uVmVyc2lvbkxvYWRlZCksIExheWEuUmVzb3VyY2VWZXJzaW9uLkZJTEVOQU1FX1ZFUlNJT04pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBzY2VuZVJlczogc3RyaW5nID0gXCJyZXMvM2Qvc2NlbmUvQ29udmVudGlvbmFsL3NjZW5lLmxzXCI7XHJcblx0cHJpdmF0ZSBzY2VuZTogTGF5YS5TY2VuZTNEO1xyXG5cdHByaXZhdGUgY2FtZXJhOiBMYXlhLkNhbWVyYTtcclxuXHRvblZlcnNpb25Mb2FkZWQoKTogdm9pZCB7XHJcblx0XHRMYXlhLlNjZW5lM0QubG9hZCh0aGlzLnNjZW5lUmVzLCBMYXlhLkhhbmRsZXIuY3JlYXRlKHRoaXMsIHRoaXMub25Mb2FkU2NlbmVDb21wbGV0ZSkpXHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9uTG9hZFNjZW5lQ29tcGxldGUoc2NlbmUpIHtcclxuXHRcdHRoaXMuc2NlbmUgPSBzY2VuZTtcclxuXHRcdExheWEuc3RhZ2UuYWRkQ2hpbGQodGhpcy5zY2VuZSk7XHJcblx0XHRsZXQgY2FtZXJhVGFyZ2V0ID0gbmV3IExheWEuU3ByaXRlM0QoKTtcclxuXHRcdHRoaXMuc2NlbmUuYWRkQ2hpbGQoY2FtZXJhVGFyZ2V0KTtcclxuXHRcdHRoaXMuY2FtZXJhID0gdGhpcy5zY2VuZS5nZXRDaGlsZEJ5TmFtZShcIkNhbWVyYVBpdm90XCIpLmdldENoaWxkQXQoMCkgYXMgTGF5YS5DYW1lcmE7XHJcblx0XHRsZXQgb3JiaXQgPSB0aGlzLmNhbWVyYS5hZGRDb21wb25lbnQoT3JiaXRDYW1lcmEpIGFzIE9yYml0Q2FtZXJhO1xyXG5cdFx0b3JiaXQuVGFyZ2V0ID0gY2FtZXJhVGFyZ2V0O1xyXG5cdH1cclxuXHJcbn1cclxuLy/mv4DmtLvlkK/liqjnsbtcclxubmV3IE1haW4oKTtcclxuIiwiZXhwb3J0IGNsYXNzIE1hdGhIZWxwZXIge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWcyUmFkID0gMC4wMTc0NTMyOVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIERlZzJSYWQ6IG51bWJlciA9IDAuMDE3NDUzMjk7XHJcbiAgICAvKipcclxuICAgICAqIFJhZDJEZWcgPSA1Ny4yOTU3OFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFJhZDJEZWc6IG51bWJlciA9IDU3LjI5NTc4O1xyXG4gICAgLyoqXHJcbiAgICAgKiDojrflj5bkuKTlkJHph4/op5LluqZcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBWZWN0b3IzQW5nbGUodjE6IExheWEuVmVjdG9yMywgdjI6IExheWEuVmVjdG9yMyk6IG51bWJlciB7XHJcbiAgICAgICAgTGF5YS5WZWN0b3IzLm5vcm1hbGl6ZSh2MiwgdjIpO1xyXG4gICAgICAgIHZhciBkb3QgPSBMYXlhLlZlY3RvcjMuZG90KHYxLCB2Mik7XHJcbiAgICAgICAgdmFyIGFuZ2xlID0gTWF0aC5hY29zKGRvdCkgKiA1Ny4yOTU3ODtcclxuICAgICAgICByZXR1cm4gYW5nbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDnkIPooajpnaLpmo/mnLpcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBvblVuaXRTcGhlcmUocmFkaXVzOiBudW1iZXIpOiBMYXlhLlZlY3RvcjMge1xyXG4gICAgICAgIHZhciBwMTogbnVtYmVyID0gdGhpcy5yYW5kb21GbG9hdCgtcmFkaXVzLCByYWRpdXMpO1xyXG4gICAgICAgIHZhciBwMjogbnVtYmVyID0gdGhpcy5yYW5kb21GbG9hdCgwLCByYWRpdXMpO1xyXG4gICAgICAgIHZhciBwMzogbnVtYmVyID0gdGhpcy5yYW5kb21GbG9hdCgtcmFkaXVzLCByYWRpdXMpO1xyXG4gICAgICAgIHZhciB2MzogTGF5YS5WZWN0b3IzID0gbmV3IExheWEuVmVjdG9yMyhwMSwgcDIsIHAzKTtcclxuICAgICAgICAvL0xheWEuVmVjdG9yMy5ub3JtYWxpemUodjMsdjMpO1xyXG4gICAgICAgIExheWEuVmVjdG9yMy5zY2FsZSh2MywgcmFkaXVzLCB2Myk7XHJcbiAgICAgICAgcmV0dXJuIHYzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tRmxvYXQobWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmaj+acuuiMg+WbtOiOt+WPluaVtOaVsOaVsOWAvCBtaW48PSB2YWx1ZSA8PW1heCBcclxuICAgICAqICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHJhbmRvbShtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpKSArIG1pbjtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENsYW1wQW5nbGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjbGFtcEFuZ2xlKGFuZ2xlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKGFuZ2xlIDwgbWluKSB7XHJcbiAgICAgICAgICAgIGFuZ2xlID0gbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChhbmdsZSA+IG1heCkge1xyXG4gICAgICAgICAgICBhbmdsZSA9IG1heDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFuZ2xlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xhbXBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjbGFtcCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IG1pbikge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG1pbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAodmFsdWUgPiBtYXgpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBtYXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG5ld0d1aWQoKSB7XHJcbiAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHtcclxuICAgICAgICAgICAgdmFyIHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwLCB2ID0gYyA9PSAneCcgPyByIDogKHIgJiAweDMgfCAweDgpO1xyXG4gICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBudW1iZXIyQmlnTnVtYmVyKG46IG51bWJlciwgbWF4TGVuOiBudW1iZXIgPSA0KTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgb3V0TnVtOiBzdHJpbmc7XHJcbiAgICAgICAgbGV0IGsgPSAxMDAwO1xyXG4gICAgICAgIGxldCBiYXNlOiBudW1iZXIgPSBrO1xyXG4gICAgICAgIGxldCBwb3cgPSAwO1xyXG5cclxuICAgICAgICBmb3IgKHBvdyA9IDA7IDsgcG93KyspIHtcclxuICAgICAgICAgICAgaWYgKG4gPCBiYXNlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiYXNlICo9IGs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB1bml0ID0gXCJcIjtcclxuICAgICAgICBpZiAocG93IDwgNSkge1xyXG4gICAgICAgICAgICB1bml0ID0gcG93ID09IDAgPyBcIlwiIDogKHBvdyA9PSAxID8gXCJrXCIgOiAocG93ID09IDIgPyBcIm1cIiA6IChwb3cgPT0gMyA/IFwiYlwiIDogXCJ0XCIpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbF9hID0gOTc7XHJcbiAgICAgICAgICAgIGxldCBsX0EgPSA2NTtcclxuICAgICAgICAgICAgbGV0IGRpdiA9IE1hdGguZmxvb3IoKHBvdyAtIDUpIC8gMjYpO1xyXG4gICAgICAgICAgICBsZXQgbW9kID0gKHBvdyAtIDUpICUgMjY7XHJcbiAgICAgICAgICAgIHVuaXQgPSBkaXYgPT0gMCA/IFN0cmluZy5mcm9tQ2hhckNvZGUobF9hICsgbW9kLCBsX2EgKyBtb2QpIDogKGRpdiA9PSAxID8gU3RyaW5nLmZyb21DaGFyQ29kZShsX0EgKyBtb2QsIGxfYSArIG1vZCkgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGxfQSArIG1vZCwgbF9BICsgbW9kKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG91dE51bSA9IFN0cmluZyhuIC8gKGJhc2UgKiAwLjAwMSkpO1xyXG4gICAgICAgIHJldHVybiBcIi5cIiA9PSAob3V0TnVtID0gb3V0TnVtLnN1YnN0cigwLCBtYXhMZW4pKS5jaGFyQXQob3V0TnVtLmxlbmd0aCAtIDEpID8gb3V0TnVtLnJlcGxhY2UoXCIuXCIsIHVuaXQpIDogb3V0TnVtICsgdW5pdDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFN5c3RlbVRpbWUoKTogc3RyaW5nIHtcclxuICAgICAgICB2YXIgY3VyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdmFyIHllYXI6IG51bWJlciA9IGN1ckRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICB2YXIgbW9udGg6IG51bWJlciA9IGN1ckRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgdmFyIGRhdGU6IG51bWJlciA9IGN1ckRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIHZhciBkYXk6IG51bWJlciA9IGN1ckRhdGUuZ2V0RGF5KCk7XHJcbiAgICAgICAgdmFyIGhvdXI6IG51bWJlciA9IGN1ckRhdGUuZ2V0SG91cnMoKTtcclxuICAgICAgICB2YXIgbWludXRlOiBudW1iZXIgPSBjdXJEYXRlLmdldE1pbnV0ZXMoKTtcclxuICAgICAgICB2YXIgc2Vjb25kOiBudW1iZXIgPSBjdXJEYXRlLmdldFNlY29uZHMoKTtcclxuICAgICAgICB2YXIgc3lzdGVtVGltZSA9IHllYXIgKyBcIuW5tFwiICsgbW9udGggKyBcIuaciFwiICsgZGF0ZSArIFwi5pelXCIgKyBob3VyICsgXCLml7ZcIiArIG1pbnV0ZSArIFwi5YiGXCIgKyBzZWNvbmQgKyBcIuenklwiO1xyXG4gICAgICAgIHJldHVybiBzeXN0ZW1UaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8q5a+55q+U54mI5pysKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQ29tcGFyZVZlcnNpb24odjE6IHN0cmluZywgdjI6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgdmFyIGFycjEgPSB2MS5zcGxpdCgnLicpO1xyXG4gICAgICAgIHZhciBhcnIyID0gdjIuc3BsaXQoJy4nKTtcclxuICAgICAgICB2YXIgbGVuID0gTWF0aC5tYXgoYXJyMS5sZW5ndGgsIGFycjIubGVuZ3RoKTtcclxuICAgICAgICB3aGlsZSAoYXJyMS5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgYXJyMS5wdXNoKCcwJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChhcnIyLmxlbmd0aCA8IGxlbikge1xyXG4gICAgICAgICAgICBhcnIyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgbnVtMSA9IHBhcnNlSW50KGFycjFbaV0pO1xyXG4gICAgICAgICAgICB2YXIgbnVtMiA9IHBhcnNlSW50KGFycjJbaV0pO1xyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgQ291bnREb3duKHRpbWU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IG1pbnV0ZSA9IE1hdGguZmxvb3IodGltZSAvIDYwKTtcclxuICAgICAgICBsZXQgc2Vjb25kID0gdGltZSAlIDYwO1xyXG5cclxuICAgICAgICByZXR1cm4gKG1pbnV0ZSA8IDEwID8gXCIwXCIgKyBtaW51dGUgOiBtaW51dGUpICsgXCI6XCIgKyAoc2Vjb25kIDwgMTAgPyBcIjBcIiArIHNlY29uZCA6IHNlY29uZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBjb3VudERheShkMTogc3RyaW5nLCBkMjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgczEgPSBuZXcgRGF0ZShkMSk7XHJcbiAgICAgICAgbGV0IHMyID0gbmV3IERhdGUoZDIpO1xyXG4gICAgICAgIHZhciBkYXlzID0gczEuZ2V0VGltZSgpIC0gczIuZ2V0VGltZSgpO1xyXG4gICAgICAgIHZhciB0aW1lID0gZGF5cyAvICgxMDAwICogNjAgKiA2MCAqIDI0KTtcclxuICAgICAgICByZXR1cm4gdGltZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFRpbWUoKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgY3VyRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IHllYXI6IG51bWJlciA9IGN1ckRhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICBsZXQgbW9udGg6IG51bWJlciA9IGN1ckRhdGUuZ2V0TW9udGgoKSArIDE7XHJcbiAgICAgICAgbGV0IGRhdGU6IG51bWJlciA9IGN1ckRhdGUuZ2V0RGF0ZSgpO1xyXG4gICAgICAgIGlmIChtb250aCA8IDEwKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3lzdGVtVGltZSA9IHllYXIgKyBcIi9cIiArIChtb250aCA8IDEwID8gXCIwXCIgKyBtb250aCA6IG1vbnRoKSArIFwiL1wiICsgKGRhdGUgPCAxMCA/IFwiMFwiICsgZGF0ZSA6IGRhdGUpO1xyXG4gICAgICAgIHJldHVybiBzeXN0ZW1UaW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHJlZml4SW50ZWdlcihudW0sIGxlbmd0aCkge1xyXG4gICAgICAgIHJldHVybiAoQXJyYXkobGVuZ3RoKS5qb2luKCcwJykgKyBudW0pLnNsaWNlKC1sZW5ndGgpO1xyXG4gICAgfVxyXG59IiwiLypcclxuKiBPcmJpdENhbWVyYSAzNjDop4Llr5/niankvZPnm7jmnLpcclxuKiB1bml0eemcgOimgeWPluW3p+WkhOeQhlxyXG4qL1xyXG5cclxuaW1wb3J0IE1vdXNlTWFuYWdlciA9IGxheWEuZXZlbnRzLk1vdXNlTWFuYWdlcjtcclxuaW1wb3J0IFF1YXRlcm5pb24gPSBsYXlhLmQzLm1hdGguUXVhdGVybmlvbjtcclxuaW1wb3J0IEV2ZW50ID0gTGF5YS5FdmVudDtcclxuaW1wb3J0IHsgTWF0aEhlbHBlciB9IGZyb20gXCIuL01hdGhIZWxwZXJcIjtcclxuZXhwb3J0IGNsYXNzIE9yYml0Q2FtZXJhIGV4dGVuZHMgTGF5YS5TY3JpcHQzRCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFjdG9yOiBudW1iZXIgPSAwLjE7XHJcblxyXG4gICAgcHVibGljIFRhcmdldDogTGF5YS5TcHJpdGUzRDtcclxuICAgIHB1YmxpYyBSb3RhdGVTcGVlZDogbnVtYmVyID0gMjtcclxuICAgIHB1YmxpYyBTbW9vdGhUaW1lOiBudW1iZXIgPSAxO1xyXG4gICAgcHVibGljIFlNaW5MaW1pdDogbnVtYmVyID0gLTE4MDtcclxuICAgIHB1YmxpYyBZTWF4TGltaXQ6IG51bWJlciA9IDE4MDtcclxuICAgIHB1YmxpYyBEaXN0YW5jZTogbnVtYmVyID0gMzU7XHJcbiAgICBwdWJsaWMgRGlzdGFuY2VNaW46IG51bWJlciA9IDE1O1xyXG4gICAgcHVibGljIERpc3RhbmNlTWF4OiBudW1iZXIgPSAzNTtcclxuICAgIHB1YmxpYyBQYXVzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzVHdlZW5pbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBSYWRpdXM6IG51bWJlciA9IDA7XHJcblxyXG4gICAgcHJpdmF0ZSBtb2RsZTogTGF5YS5UcmFuc2Zvcm0zRDtcclxuICAgIHByaXZhdGUgbW9kbGVQYXJlbnQ6IExheWEuVHJhbnNmb3JtM0Q7XHJcblxyXG4gICAgcHJpdmF0ZSBBbmdsZUg6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIEFuZ2xlVjogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgZG93blg6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIGRvd25ZOiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBpc0Rvd246IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgbW91c2VYOiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBtb3VzZVk6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIGlzTW92ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHByaXZhdGUgdG1wT3V0Um90YXRpb246IFF1YXRlcm5pb24gPSBuZXcgUXVhdGVybmlvbigwLCAwLCAwLCAwKTtcclxuICAgIHByaXZhdGUgbGFzdERpc3RhbmNlOiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSB0YXJnZXRPZmZzZXRNb3ZlWTogbnVtYmVyID0gMDtcclxuXHJcbiAgICBvbkF3YWtlKCkge1xyXG4gICAgICAgIHRoaXMubW9kbGUgPSAodGhpcy5vd25lciBhcyBMYXlhLlNwcml0ZTNEKS50cmFuc2Zvcm07XHJcbiAgICAgICAgdGhpcy5tb2RsZVBhcmVudCA9IHRoaXMubW9kbGUuX3BhcmVudDtcclxuICAgICAgICB2YXIgYW5nbGVzID0gdGhpcy5tb2RsZVBhcmVudC5sb2NhbFJvdGF0aW9uRXVsZXI7XHJcbiAgICAgICAgdGhpcy5BbmdsZUggPSBhbmdsZXMueTtcclxuICAgICAgICB0aGlzLkFuZ2xlViA9IGFuZ2xlcy54O1xyXG4gICAgICAgIHRoaXMuaW5pdEV2ZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICBMYXlhLnN0YWdlLm9mZihMYXlhLkV2ZW50Lk1PVVNFX0RPV04sIHRoaXMsIHRoaXMub25Nb3VzZURvd25IYW5kbGVyKTtcclxuICAgICAgICBMYXlhLnN0YWdlLm9mZihMYXlhLkV2ZW50Lk1PVVNFX1VQLCB0aGlzLCB0aGlzLm9uTW91c2VVcEhhbmRsZXIpO1xyXG4gICAgICAgIExheWEuc3RhZ2Uub2ZmKExheWEuRXZlbnQuTU9VU0VfV0hFRUwsIHRoaXMsIHRoaXMub25Nb3VzZXJXaGVlbEhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRSb3RhdGlvbigpOiBMYXlhLlF1YXRlcm5pb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFJvdGF0aW9uKGg6IG51bWJlciwgdjogbnVtYmVyLCB1c2VUd2VlbjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgbGV0IHQgPSBuZXcgTGF5YS5RdWF0ZXJuaW9uKHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbi54LCB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb24ueSwgdGhpcy5tb2RsZVBhcmVudC5sb2NhbFJvdGF0aW9uLnosIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbi53KTtcclxuICAgICAgICB0aGlzLkFuZ2xlSCA9IGg7XHJcbiAgICAgICAgdGhpcy5BbmdsZVYgPSB2O1xyXG4gICAgICAgIFF1YXRlcm5pb24uY3JlYXRlRnJvbVlhd1BpdGNoUm9sbCh0aGlzLkFuZ2xlSCAqIDAuMDA1ICogdGhpcy5Sb3RhdGVTcGVlZCwgdGhpcy5BbmdsZVYgKiAwLjAwNSAqIHRoaXMuUm90YXRlU3BlZWQsIDAsIHRoaXMudG1wT3V0Um90YXRpb24pO1xyXG4gICAgICAgIGlmICh1c2VUd2Vlbikge1xyXG4gICAgICAgICAgICB0aGlzLmlzVHdlZW5pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICBmYWlyeWd1aS50d2Vlbi5HVHdlZW4udG80KHQueCwgdC55LCB0LnosIHQudywgdGhpcy50bXBPdXRSb3RhdGlvbi54LCB0aGlzLnRtcE91dFJvdGF0aW9uLnksIHRoaXMudG1wT3V0Um90YXRpb24ueiwgdGhpcy50bXBPdXRSb3RhdGlvbi53LCAxKVxyXG4gICAgICAgICAgICAgICAgLm9uVXBkYXRlKHRoaXMub25Ud2VlblJvdGF0aW9uVXBkYXRlLCB0aGlzKVxyXG4gICAgICAgICAgICAgICAgLm9uQ29tcGxldGUodGhpcy5vblR3ZWVuUm90YXRpb25Db21wZWx0ZSwgdGhpcylcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb24gPSB0aGlzLnRtcE91dFJvdGF0aW9uO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgdHdlZW5Sb3RhdGlvbiA9IG5ldyBMYXlhLlF1YXRlcm5pb24oMCwgMCwgMCwgMCk7XHJcbiAgICBwcml2YXRlIG9uVHdlZW5Sb3RhdGlvblVwZGF0ZSh0d2VlbjogZmFpcnlndWkudHdlZW4uR1R3ZWVuZXIpIHtcclxuICAgICAgICB0aGlzLnRtcE91dFJvdGF0aW9uID0gbmV3IExheWEuUXVhdGVybmlvbih0d2Vlbi52YWx1ZS54LCB0d2Vlbi52YWx1ZS55LCB0d2Vlbi52YWx1ZS56LCB0d2Vlbi52YWx1ZS53KTtcclxuICAgICAgICB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb24gPSB0aGlzLnRtcE91dFJvdGF0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb25Ud2VlblJvdGF0aW9uQ29tcGVsdGUoKSB7XHJcbiAgICAgICAgdGhpcy5pc1R3ZWVuaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5QYXVzZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHVwOiBMYXlhLlZlY3RvcjMgPSBuZXcgTGF5YS5WZWN0b3IzKCk7XHJcbiAgICBvblVwZGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5QYXVzZSB8fCB0aGlzLmlzVHdlZW5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gbGV0IGFuID0gMy4xNCAvIDI7XHJcbiAgICAgICAgLy8gbGV0IG1vdmVIID0gdGhpcy5tb3VzZVggKiBNYXRoLmNvcyhhbikgKyB0aGlzLm1vdXNlWSAqIE1hdGguc2luKGFuKTtcclxuICAgICAgICAvLyBsZXQgbW92ZVYgPSB0aGlzLm1vdXNlWCAqIE1hdGguc2luKGFuKSArIHRoaXMubW91c2VZICogTWF0aC5jb3MoYW4pXHJcbiAgICAgICAgLy8gdGhpcy5BbmdsZUggKz0gbW92ZUg7XHJcbiAgICAgICAgLy8gdGhpcy5BbmdsZVYgKz0gbW92ZVY7XHJcblxyXG4gICAgICAgIHRoaXMubW9kbGVQYXJlbnQuZ2V0VXAodGhpcy51cCk7XHJcbiAgICAgICAgaWYgKHRoaXMudXAueSA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5BbmdsZUggLT0gdGhpcy5tb3VzZVg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5BbmdsZUggKz0gdGhpcy5tb3VzZVg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmICh0aGlzLm1vZGxlUGFyZW50LnJpZ2h0LnggPiAwKSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuQW5nbGVWIC09IHRoaXMubW91c2VZIDtcclxuICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgIC8vICAgICB0aGlzLkFuZ2xlViArPSB0aGlzLm1vdXNlWSA7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIHRoaXMuQW5nbGVWIC09IHRoaXMubW91c2VZO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5tb3VzZVggPSAwO1xyXG4gICAgICAgIHRoaXMubW91c2VZID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBvbkxhdGVVcGRhdGUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuUGF1c2UgfHwgdGhpcy5pc1R3ZWVuaW5nKSB7IHJldHVybjsgfVxyXG4gICAgICAgIGlmICh0aGlzLlRhcmdldCAhPSBudWxsKSB7XHJcblxyXG4gICAgICAgICAgICB0aGlzLlRhcmdldC50cmFuc2Zvcm0ubG9jYWxQb3NpdGlvbiA9IG5ldyBMYXlhLlZlY3RvcjMoMCwgdGhpcy50YXJnZXRPZmZzZXRNb3ZlWSwgMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FtZXJlUm90YXRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2FtZXJhWm9vbSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbWVyZVJvdGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5QYXVzZSB8fCB0aGlzLmlzVHdlZW5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc0Rvd24pIHtcclxuICAgICAgICAgICAgLy90aGlzLkFuZ2xlViA9IE1hdGhIZWxwZXIuQ2xhbXAodGhpcy5BbmdsZVYsIHRoaXMuWU1pbkxpbWl0LCB0aGlzLllNYXhMaW1pdCk7XHJcbiAgICAgICAgICAgIFF1YXRlcm5pb24uY3JlYXRlRnJvbVlhd1BpdGNoUm9sbCh0aGlzLkFuZ2xlSCAqIDAuMDA1ICogdGhpcy5Sb3RhdGVTcGVlZCwgdGhpcy5BbmdsZVYgKiAwLjAwNSAqIHRoaXMuUm90YXRlU3BlZWQsIDAsIHRoaXMudG1wT3V0Um90YXRpb24pO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb24gPSB0aGlzLnRtcE91dFJvdGF0aW9uO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYW1lcmFab29tKCkge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1vZGxlLmxvY2FsUG9zaXRpb24ueiAhPSB0aGlzLkRpc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kbGUubG9jYWxQb3NpdGlvbiA9IG5ldyBMYXlhLlZlY3RvcjMoMCwgdGhpcy50YXJnZXRPZmZzZXRNb3ZlWSwgdGhpcy5EaXN0YW5jZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdEV2ZW50cygpIHtcclxuICAgICAgICBMYXlhLnN0YWdlLm9uKExheWEuRXZlbnQuTU9VU0VfRE9XTiwgdGhpcywgdGhpcy5vbk1vdXNlRG93bkhhbmRsZXIpO1xyXG4gICAgICAgIExheWEuc3RhZ2Uub24oTGF5YS5FdmVudC5NT1VTRV9VUCwgdGhpcywgdGhpcy5vbk1vdXNlVXBIYW5kbGVyKTtcclxuICAgICAgICBMYXlhLnN0YWdlLm9uKExheWEuRXZlbnQuTU9VU0VfV0hFRUwsIHRoaXMsIHRoaXMub25Nb3VzZXJXaGVlbEhhbmRsZXIpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBvbk1vdXNlcldoZWVsSGFuZGxlcihlOiBFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBkaXN0YW5jZTogbnVtYmVyID0gdGhpcy5sYXN0RGlzdGFuY2UgKyBlLmRlbHRhO1xyXG4gICAgICAgIHRoaXMuRGlzdGFuY2UgLT0gKGRpc3RhbmNlIC0gdGhpcy5sYXN0RGlzdGFuY2UpICogdGhpcy5mYWN0b3I7XHJcbiAgICAgICAgdGhpcy5EaXN0YW5jZSA9IE1hdGhIZWxwZXIuY2xhbXAodGhpcy5EaXN0YW5jZSwgdGhpcy5EaXN0YW5jZU1pbiwgdGhpcy5EaXN0YW5jZU1heCk7XHJcbiAgICAgICAgdGhpcy5sYXN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcclxuICAgICAgICB0aGlzLnRhcmdldE9mZnNldE1vdmVZID0gLSh0aGlzLkRpc3RhbmNlIC0gOCkgLyB0aGlzLkRpc3RhbmNlTWluICogdGhpcy5SYWRpdXM7XHJcbiAgICAgICAgdGhpcy50YXJnZXRPZmZzZXRNb3ZlWSA9IE1hdGhIZWxwZXIuY2xhbXAodGhpcy50YXJnZXRPZmZzZXRNb3ZlWSwgMCwgdGhpcy5SYWRpdXMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTW91c2VEb3duSGFuZGxlcihlOiBFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlLnRvdWNoZXMpIHtcclxuICAgICAgICAgICAgdmFyIHRvdWNoZXM6IEFycmF5PGFueT4gPSBlLnRvdWNoZXM7XHJcbiAgICAgICAgICAgIGlmICh0b3VjaGVzICYmIHRvdWNoZXMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubGFzdERpc3RhbmNlID0gdGhpcy5nZXREaXN0YW5jZSh0b3VjaGVzKTtcclxuICAgICAgICAgICAgICAgIExheWEuc3RhZ2Uub24oRXZlbnQuTU9VU0VfTU9WRSwgdGhpcywgdGhpcy5vbk1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3duWCA9IGUuc3RhZ2VYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3duWSA9IGUuc3RhZ2VZO1xyXG4gICAgICAgICAgICAgICAgTGF5YS5zdGFnZS5vbihMYXlhLkV2ZW50Lk1PVVNFX01PVkUsIHRoaXMsIHRoaXMub25Nb3VzZU1vdmVIYW5kbGVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZG93blggPSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VYO1xyXG4gICAgICAgICAgICB0aGlzLmRvd25ZID0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWTtcclxuICAgICAgICAgICAgTGF5YS5zdGFnZS5vbihMYXlhLkV2ZW50Lk1PVVNFX01PVkUsIHRoaXMsIHRoaXMub25Nb3VzZU1vdmVIYW5kbGVyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNEb3duID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzTW92ZWQgPSBmYWxzZTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZVVwSGFuZGxlcigpIHtcclxuICAgICAgICBpZiAodGhpcy5QYXVzZSB8fCB0aGlzLmlzVHdlZW5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzRG93biA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaXNNb3ZlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubW91c2VYID0gMDtcclxuICAgICAgICB0aGlzLm1vdXNlWSA9IDA7XHJcbiAgICAgICAgTGF5YS5zdGFnZS5vZmYoTGF5YS5FdmVudC5NT1VTRV9NT1ZFLCB0aGlzLCB0aGlzLm9uTW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZU1vdmVIYW5kbGVyKGU6IEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuUGF1c2UgfHwgdGhpcy5pc1R3ZWVuaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUudG91Y2hlcykge1xyXG4gICAgICAgICAgICB2YXIgdG91Y2hlczogQXJyYXk8YW55PiA9IGUudG91Y2hlcztcclxuICAgICAgICAgICAgaWYgKHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlOiBudW1iZXIgPSB0aGlzLmdldERpc3RhbmNlKGUudG91Y2hlcyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmYWN0b3I6IG51bWJlciA9IDAuMDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkRpc3RhbmNlIC09IChkaXN0YW5jZSAtIHRoaXMubGFzdERpc3RhbmNlKSAqIGZhY3RvcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuRGlzdGFuY2UgPSBNYXRoSGVscGVyLmNsYW1wKHRoaXMuRGlzdGFuY2UsIHRoaXMuRGlzdGFuY2VNaW4sIHRoaXMuRGlzdGFuY2VNYXgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0T2Zmc2V0TW92ZVkgPSAtKHRoaXMuRGlzdGFuY2UgLSA4KSAvIHRoaXMuRGlzdGFuY2VNaW4gKiB0aGlzLlJhZGl1cztcclxuICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0T2Zmc2V0TW92ZVkgPSBNYXRoSGVscGVyLmNsYW1wKHRoaXMudGFyZ2V0T2Zmc2V0TW92ZVksIDAsIHRoaXMuUmFkaXVzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRG93bikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2VYID0gZS5zdGFnZVggLSB0aGlzLmRvd25YO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubW91c2VZID0gZS5zdGFnZVkgLSB0aGlzLmRvd25ZO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvd25YICE9PSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VYIHx8IHRoaXMuZG93blkgIT09IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3duWCA9IGUuc3RhZ2VYO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG93blkgPSBlLnN0YWdlWTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0Rvd24pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubW91c2VYID0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWCAtIHRoaXMuZG93blg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdXNlWSA9IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVkgLSB0aGlzLmRvd25ZO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG93blggIT09IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVggfHwgdGhpcy5kb3duWSAhPT0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNb3ZlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25YID0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZG93blkgPSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VZO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKuiuoeeul+S4pOS4quinpuaRuOeCueS5i+mXtOeahOi3neemuyovXHJcbiAgICBwcml2YXRlIGdldERpc3RhbmNlKHBvaW50czogQXJyYXk8YW55Pik6IG51bWJlciB7XHJcbiAgICAgICAgdmFyIGRpc3RhbmNlOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIGlmIChwb2ludHMgJiYgcG9pbnRzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHZhciBkeDogbnVtYmVyID0gcG9pbnRzWzBdLnN0YWdlWCAtIHBvaW50c1sxXS5zdGFnZVg7XHJcbiAgICAgICAgICAgIHZhciBkeTogbnVtYmVyID0gcG9pbnRzWzBdLnN0YWdlWSAtIHBvaW50c1sxXS5zdGFnZVk7XHJcbiAgICAgICAgICAgIGRpc3RhbmNlID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRpc3RhbmNlO1xyXG4gICAgfVxyXG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkQ6L1Byb2dyYW0gRmlsZXMgKHg4NikvTGF5YUFpcklERV9iZXRhMi4xLjBiZXRhMS9yZXNvdXJjZXMvYXBwL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvR2FtZUNvbmZpZy50cyIsInNyYy9NYWluLnRzIiwic3JjL01hdGhIZWxwZXIudHMiLCJzcmMvT3JiaXRDYW1lcmEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQSxnR0FBZ0c7O0FBRWhHOztFQUVFO0FBQ0Y7SUFhSTtJQUFjLENBQUM7SUFDUixlQUFJLEdBQVg7UUFDSSxJQUFJLEdBQUcsR0FBYSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztJQUVqRCxDQUFDO0lBaEJNLGdCQUFLLEdBQVEs
SUFBSSxDQUFDO0lBQ2xCLGlCQUFNLEdBQVEsR0FBRyxDQUFDO0lBQ2xCLG9CQUFTLEdBQVEsV0FBVyxDQUFDO0lBQzdCLHFCQUFVLEdBQVEsTUFBTSxDQUFDO0lBQ3pCLGlCQUFNLEdBQVEsS0FBSyxDQUFDO0lBQ3BCLGlCQUFNLEdBQVEsTUFBTSxDQUFDO0lBQ3JCLHFCQUFVLEdBQUssRUFBRSxDQUFDO0lBQ2xCLG9CQUFTLEdBQVEsRUFBRSxDQUFDO0lBQ3BCLGdCQUFLLEdBQVMsS0FBSyxDQUFDO0lBQ3BCLGVBQUksR0FBUyxLQUFLLENBQUM7SUFDbkIsdUJBQVksR0FBUyxLQUFLLENBQUM7SUFDM0IsNEJBQWlCLEdBQVMsSUFBSSxDQUFDO0lBTTFDLGlCQUFDO0NBbEJELEFBa0JDLElBQUE7a0JBbEJvQixVQUFVO0FBbUIvQixVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7Ozs7QUN4QmxCLDJDQUFzQztBQUN0Qyw2Q0FBNEM7QUFDNUM7SUFDQztRQXFCUSxhQUFRLEdBQVcsb0NBQW9DLENBQUM7UUFwQi9ELGdCQUFnQjtRQUNoQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFVLENBQUMsS0FBSyxFQUFFLG9CQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7O1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQVUsQ0FBQyxLQUFLLEVBQUUsb0JBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLG9CQUFVLENBQUMsU0FBUyxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFH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QUksQ0FBQyxRQUFRLEdBb1A3QztBQXBQWSxrQ0FBVyIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoYi5oYXNPd25Qcm9wZXJ0eShwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcclxuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxuICAgIH07XHJcbn0pKCk7XHJcbihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvKipUaGlzIGNsYXNzIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IExheWFBaXJJREUsIHBsZWFzZSBkbyBub3QgbWFrZSBhbnkgbW9kaWZpY2F0aW9ucy4gKi9cclxuXHJcbi8qXHJcbiog5ri45oiP5Yid5aeL5YyW6YWN572uO1xyXG4qL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYW1lQ29uZmlne1xyXG4gICAgc3RhdGljIHdpZHRoOm51bWJlcj0xMzM0O1xyXG4gICAgc3RhdGljIGhlaWdodDpudW1iZXI9NzUwO1xyXG4gICAgc3RhdGljIHNjYWxlTW9kZTpzdHJpbmc9XCJmaXhlZGF1dG9cIjtcclxuICAgIHN0YXRpYyBzY3JlZW5Nb2RlOnN0cmluZz1cIm5vbmVcIjtcclxuICAgIHN0YXRpYyBhbGlnblY6c3RyaW5nPVwidG9wXCI7XHJcbiAgICBzdGF0aWMgYWxpZ25IOnN0cmluZz1cImxlZnRcIjtcclxuICAgIHN0YXRpYyBzdGFydFNjZW5lOmFueT1cIlwiO1xyXG4gICAgc3RhdGljIHNjZW5lUm9vdDpzdHJpbmc9XCJcIjtcclxuICAgIHN0YXRpYyBkZWJ1Zzpib29sZWFuPWZhbHNlO1xyXG4gICAgc3RhdGljIHN0YXQ6Ym9vbGVhbj1mYWxzZTtcclxuICAgIHN0YXRpYyBwaHlzaWNzRGVidWc6Ym9vbGVhbj1mYWxzZTtcclxuICAgIHN0YXRpYyBleHBvcnRTY2VuZVRvSnNvbjpib29sZWFuPXRydWU7XHJcbiAgICBjb25zdHJ1Y3Rvcigpe31cclxuICAgIHN0YXRpYyBpbml0KCl7XHJcbiAgICAgICAgdmFyIHJlZzogRnVuY3Rpb24gPSBMYXlhLkNsYXNzVXRpbHMucmVnQ2xhc3M7XHJcblxyXG4gICAgfVxyXG59XHJcbkdhbWVDb25maWcuaW5pdCgpOyIsImltcG9ydCBHYW1lQ29uZmlnIGZyb20gXCIuL0dhbWVDb25maWdcIjtcclxuaW1wb3J0IHsgT3JiaXRDYW1lcmEgfSBmcm9tIFwiLi9PcmJpdENhbWVyYVwiO1xyXG5jbGFzcyBNYWluIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdC8v5qC55o2uSURF6K6+572u5Yid5aeL5YyW5byV5pOOXHRcdFxyXG5cdFx0aWYgKHdpbmRvd1tcIkxheWEzRFwiXSkgTGF5YTNELmluaXQoR2FtZUNvbmZpZy53aWR0aCwgR2FtZUNvbmZpZy5oZWlnaHQpO1xyXG5cdFx0ZWxzZSBMYXlhLmluaXQoR2FtZUNvbmZpZy53aWR0aCwgR2FtZUNvbmZpZy5oZWlnaHQsIExheWFbXCJXZWJHTFwiXSk7XHJcblx0XHRMYXlhW1wiUGh5c2ljc1wiXSAmJiBMYXlhW1wiUGh5c2ljc1wiXS5lbmFibGUoKTtcclxuXHRcdExheWFbXCJEZWJ1Z1BhbmVsXCJdICYmIExheWFbXCJEZWJ1Z1BhbmVsXCJdLmVuYWJsZSgpO1xyXG5cdFx0TGF5YS5zdGFnZS5zY2FsZU1vZGUgPSBHYW1lQ29uZmlnLnNjYWxlTW9kZTtcclxuXHRcdExheWEuc3RhZ2Uuc2NyZWVuTW9kZSA9IEdhbWVDb25maWcuc2NyZWVuTW9kZTtcclxuXHRcdC8v5YW85a655b6u5L+h5LiN5pSv5oyB5Yqg6L29c2NlbmXlkI7nvIDlnLrmma9cclxuXHRcdExheWEuVVJMLmV4cG9ydFNjZW5lVG9Kc29uID0gR2FtZUNvbmZpZy5leHBvcnRTY2VuZVRvSnNvbjtcclxuXHJcblx0XHQvL+aJk+W8gOiwg+ivlemdouadv++8iOmAmui/h0lEReiuvue9ruiwg+ivleaooeW8j++8jOaIluiAhXVybOWcsOWdgOWinuWKoGRlYnVnPXRydWXlj4LmlbDvvIzlnYflj6/miZPlvIDosIPor5XpnaLmnb/vvIlcclxuXHRcdGlmIChHYW1lQ29uZmlnLmRlYnVnIHx8IExheWEuVXRpbHMuZ2V0UXVlcnlTdHJpbmcoXCJkZWJ1Z1wiKSA9PSBcInRydWVcIikgTGF5YS5lbmFibGVEZWJ1Z1BhbmVsKCk7XHJcblx0XHRpZiAoR2FtZUNvbmZpZy5waHlzaWNzRGVidWcgJiYgTGF5YVtcIlBoeXNpY3NEZWJ1Z0RyYXdcIl0pIExheWFbXCJQaHlzaWNzRGVidWdEcmF3XCJdLmVuYWJsZSgpO1xyXG5cdFx0aWYgKEdhbWVDb25maWcuc3RhdCkgTGF5YS5TdGF0LnNob3coKTtcclxuXHRcdExheWEuYWxlcnRHbG9iYWxFcnJvciA9IHRydWU7XHJcblxyXG5cdFx0Ly/mv4DmtLvotYTmupDniYjmnKzmjqfliLbvvIx2ZXJzaW9uLmpzb27nlLFJREXlj5HluIPlip/og73oh6rliqjnlJ/miJDvvIzlpoLmnpzmsqHmnInkuZ/kuI3lvbHlk43lkI7nu63mtYHnqItcclxuXHRcdExheWEuUmVzb3VyY2VWZXJzaW9uLmVuYWJsZShcInZlcnNpb24uanNvblwiLCBMYXlhLkhhbmRsZXIuY3JlYXRlKHRoaXMsIHRoaXMub25WZXJzaW9uTG9hZGVkKSwgTGF5YS5SZXNvdXJjZVZlcnNpb24uRklMRU5BTUVfVkVSU0lPTik7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHNjZW5lUmVzOiBzdHJpbmcgPSBcInJlcy8zZC9zY2VuZS9Db252ZW50aW9uYWwvc2NlbmUubHNcIjtcclxuXHRwcml2YXRlIHNjZW5lOiBMYXlhLlNjZW5lM0Q7XHJcblx0cHJpdmF0ZSBjYW1lcmE6IExheWEuQ2FtZXJhO1xyXG5cdG9uVmVyc2lvbkxvYWRlZCgpOiB2b2lkIHtcclxuXHRcdExheWEuU2NlbmUzRC5sb2FkKHRoaXMuc2NlbmVSZXMsIExheWEuSGFuZGxlci5jcmVhdGUodGhpcywgdGhpcy5vbkxvYWRTY2VuZUNvbXBsZXRlKSlcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb25Mb2FkU2NlbmVDb21wbGV0ZShzY2VuZSkge1xyXG5cdFx0dGhpcy5zY2VuZSA9IHNjZW5lO1xyXG5cdFx0TGF5YS5zdGFnZS5hZGRDaGlsZCh0aGlzLnNjZW5lKTtcclxuXHRcdGxldCBjYW1lcmFUYXJnZXQgPSBuZXcgTGF5YS5TcHJpdGUzRCgpO1xyXG5cdFx0dGhpcy5zY2VuZS5hZGRDaGlsZChjYW1lcmFUYXJnZXQpO1xyXG5cdFx0dGhpcy5jYW1lcmEgPSB0aGlzLnNjZW5lLmdldENoaWxkQnlOYW1lKFwiQ2FtZXJhUGl2b3RcIikuZ2V0Q2hpbGRBdCgwKSBhcyBMYXlhLkNhbWVyYTtcclxuXHRcdGxldCBvcmJpdCA9IHRoaXMuY2FtZXJhLmFkZENvbXBvbmVudChPcmJpdENhbWVyYSkgYXMgT3JiaXRDYW1lcmE7XHJcblx0XHRvcmJpdC5UYXJnZXQgPSBjYW1lcmFUYXJnZXQ7XHJcblx0fVxyXG5cclxufVxyXG4vL+a/gOa0u+WQr+WKqOexu1xyXG5uZXcgTWFpbigpO1xyXG4iLCJleHBvcnQgY2xhc3MgTWF0aEhlbHBlciB7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKipcclxuICAgICAqIERlZzJSYWQgPSAwLjAxNzQ1MzI5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgRGVnMlJhZDogbnVtYmVyID0gMC4wMTc0NTMyOTtcclxuICAgIC8qKlxyXG4gICAgICogUmFkMkRlZyA9IDU3LjI5NTc4XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgUmFkMkRlZzogbnVtYmVyID0gNTcuMjk1Nzg7XHJcbiAgICAvKipcclxuICAgICAqIOiOt+WPluS4pOWQkemHj+inkuW6plxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIFZlY3RvcjNBbmdsZSh2MTogTGF5YS5WZWN0b3IzLCB2MjogTGF5YS5WZWN0b3IzKTogbnVtYmVyIHtcclxuICAgICAgICBMYXlhLlZlY3RvcjMubm9ybWFsaXplKHYyLCB2Mik7XHJcbiAgICAgICAgdmFyIGRvdCA9IExheWEuVmVjdG9yMy5kb3QodjEsIHYyKTtcclxuICAgICAgICB2YXIgYW5nbGUgPSBNYXRoLmFjb3MoZG90KSAqIDU3LjI5NTc4O1xyXG4gICAgICAgIHJldHVybiBhbmdsZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOeQg+ihqOmdoumaj+aculxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIG9uVW5pdFNwaGVyZShyYWRpdXM6IG51bWJlcik6IExheWEuVmVjdG9yMyB7XHJcbiAgICAgICAgdmFyIHAxOiBudW1iZXIgPSB0aGlzLnJhbmRvbUZsb2F0KC1yYWRpdXMsIHJhZGl1cyk7XHJcbiAgICAgICAgdmFyIHAyOiBudW1iZXIgPSB0aGlzLnJhbmRvbUZsb2F0KDAsIHJhZGl1cyk7XHJcbiAgICAgICAgdmFyIHAzOiBudW1iZXIgPSB0aGlzLnJhbmRvbUZsb2F0KC1yYWRpdXMsIHJhZGl1cyk7XHJcbiAgICAgICAgdmFyIHYzOiBMYXlhLlZlY3RvcjMgPSBuZXcgTGF5YS5WZWN0b3IzKHAxLCBwMiwgcDMpO1xyXG4gICAgICAgIC8vTGF5YS5WZWN0b3IzLm5vcm1hbGl6ZSh2Myx2Myk7XHJcbiAgICAgICAgTGF5YS5WZWN0b3IzLnNjYWxlKHYzLCByYWRpdXMsIHYzKTtcclxuICAgICAgICByZXR1cm4gdjM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByYW5kb21GbG9hdChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZqP5py66IyD5Zu06I635Y+W5pW05pWw5pWw5YC8IG1pbjw9IHZhbHVlIDw9bWF4IFxyXG4gICAgICogKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tKG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkpICsgbWluO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2xhbXBBbmdsZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNsYW1wQW5nbGUoYW5nbGU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoYW5nbGUgPCBtaW4pIHtcclxuICAgICAgICAgICAgYW5nbGUgPSBtaW47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGFuZ2xlID4gbWF4KSB7XHJcbiAgICAgICAgICAgIGFuZ2xlID0gbWF4O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gYW5nbGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDbGFtcFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgbWluKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh2YWx1ZSA+IG1heCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IG1heDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbmV3R3VpZCgpIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xyXG4gICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsIHYgPSBjID09ICd4JyA/IHIgOiAociAmIDB4MyB8IDB4OCk7XHJcbiAgICAgICAgICAgIHJldHVybiB2LnRvU3RyaW5nKDE2KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlcjJCaWdOdW1iZXIobjogbnVtYmVyLCBtYXhMZW46IG51bWJlciA9IDQpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBvdXROdW06IHN0cmluZztcclxuICAgICAgICBsZXQgayA9IDEwMDA7XHJcbiAgICAgICAgbGV0IGJhc2U6IG51bWJlciA9IGs7XHJcbiAgICAgICAgbGV0IHBvdyA9IDA7XHJcblxyXG4gICAgICAgIGZvciAocG93ID0gMDsgOyBwb3crKykge1xyXG4gICAgICAgICAgICBpZiAobiA8IGJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJhc2UgKj0gaztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHVuaXQgPSBcIlwiO1xyXG4gICAgICAgIGlmIChwb3cgPCA1KSB7XHJcbiAgICAgICAgICAgIHVuaXQgPSBwb3cgPT0gMCA/IFwiXCIgOiAocG93ID09IDEgPyBcImtcIiA6IChwb3cgPT0gMiA/IFwibVwiIDogKHBvdyA9PSAzID8gXCJiXCIgOiBcInRcIikpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBsX2EgPSA5NztcclxuICAgICAgICAgICAgbGV0IGxfQSA9IDY1O1xyXG4gICAgICAgICAgICBsZXQgZGl2ID0gTWF0aC5mbG9vcigocG93IC0gNSkgLyAyNik7XHJcbiAgICAgICAgICAgIGxldCBtb2QgPSAocG93IC0gNSkgJSAyNjtcclxuICAgICAgICAgICAgdW5pdCA9IGRpdiA9PSAwID8gU3RyaW5nLmZyb21DaGFyQ29kZShsX2EgKyBtb2QsIGxfYSArIG1vZCkgOiAoZGl2ID09IDEgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKGxfQSArIG1vZCwgbF9hICsgbW9kKSA6IFN0cmluZy5mcm9tQ2hhckNvZGUobF9BICsgbW9kLCBsX0EgKyBtb2QpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb3V0TnVtID0gU3RyaW5nKG4gLyAoYmFzZSAqIDAuMDAxKSk7XHJcbiAgICAgICAgcmV0dXJuIFwiLlwiID09IChvdXROdW0gPSBvdXROdW0uc3Vic3RyKDAsIG1heExlbikpLmNoYXJBdChvdXROdW0ubGVuZ3RoIC0gMSkgPyBvdXROdW0ucmVwbGFjZShcIi5cIiwgdW5pdCkgOiBvdXROdW0gKyB1bml0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U3lzdGVtVGltZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIHZhciBjdXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICB2YXIgeWVhcjogbnVtYmVyID0gY3VyRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIHZhciBtb250aDogbnVtYmVyID0gY3VyRGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgICAgICB2YXIgZGF0ZTogbnVtYmVyID0gY3VyRGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgdmFyIGRheTogbnVtYmVyID0gY3VyRGF0ZS5nZXREYXkoKTtcclxuICAgICAgICB2YXIgaG91cjogbnVtYmVyID0gY3VyRGF0ZS5nZXRIb3VycygpO1xyXG4gICAgICAgIHZhciBtaW51dGU6IG51bWJlciA9IGN1ckRhdGUuZ2V0TWludXRlcygpO1xyXG4gICAgICAgIHZhciBzZWNvbmQ6IG51bWJlciA9IGN1ckRhdGUuZ2V0U2Vjb25kcygpO1xyXG4gICAgICAgIHZhciBzeXN0ZW1UaW1lID0geWVhciArIFwi5bm0XCIgKyBtb250aCArIFwi5pyIXCIgKyBkYXRlICsgXCLml6VcIiArIGhvdXIgKyBcIuaXtlwiICsgbWludXRlICsgXCLliIZcIiArIHNlY29uZCArIFwi56eSXCI7XHJcbiAgICAgICAgcmV0dXJuIHN5c3RlbVRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyrlr7nmr5TniYjmnKwqL1xyXG4gICAgcHVibGljIHN0YXRpYyBDb21wYXJlVmVyc2lvbih2MTogc3RyaW5nLCB2Mjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgYXJyMSA9IHYxLnNwbGl0KCcuJyk7XHJcbiAgICAgICAgdmFyIGFycjIgPSB2Mi5zcGxpdCgnLicpO1xyXG4gICAgICAgIHZhciBsZW4gPSBNYXRoLm1heChhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xyXG4gICAgICAgIHdoaWxlIChhcnIxLmxlbmd0aCA8IGxlbikge1xyXG4gICAgICAgICAgICBhcnIxLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGFycjIubGVuZ3RoIDwgbGVuKSB7XHJcbiAgICAgICAgICAgIGFycjIucHVzaCgnMCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBudW0xID0gcGFyc2VJbnQoYXJyMVtpXSk7XHJcbiAgICAgICAgICAgIHZhciBudW0yID0gcGFyc2VJbnQoYXJyMltpXSk7XHJcbiAgICAgICAgICAgIGlmIChudW0xID4gbnVtMikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobnVtMSA8IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAtMTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBDb3VudERvd24odGltZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgbWludXRlID0gTWF0aC5mbG9vcih0aW1lIC8gNjApO1xyXG4gICAgICAgIGxldCBzZWNvbmQgPSB0aW1lICUgNjA7XHJcblxyXG4gICAgICAgIHJldHVybiAobWludXRlIDwgMTAgPyBcIjBcIiArIG1pbnV0ZSA6IG1pbnV0ZSkgKyBcIjpcIiArIChzZWNvbmQgPCAxMCA/IFwiMFwiICsgc2Vjb25kIDogc2Vjb25kKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvdW50RGF5KGQxOiBzdHJpbmcsIGQyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCBzMSA9IG5ldyBEYXRlKGQxKTtcclxuICAgICAgICBsZXQgczIgPSBuZXcgRGF0ZShkMik7XHJcbiAgICAgICAgdmFyIGRheXMgPSBzMS5nZXRUaW1lKCkgLSBzMi5nZXRUaW1lKCk7XHJcbiAgICAgICAgdmFyIHRpbWUgPSBkYXlzIC8gKDEwMDAgKiA2MCAqIDYwICogMjQpO1xyXG4gICAgICAgIHJldHVybiB0aW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGltZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGxldCBjdXJEYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICBsZXQgeWVhcjogbnVtYmVyID0gY3VyRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgIGxldCBtb250aDogbnVtYmVyID0gY3VyRGF0ZS5nZXRNb250aCgpICsgMTtcclxuICAgICAgICBsZXQgZGF0ZTogbnVtYmVyID0gY3VyRGF0ZS5nZXREYXRlKCk7XHJcbiAgICAgICAgaWYgKG1vbnRoIDwgMTApIHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzeXN0ZW1UaW1lID0geWVhciArIFwiL1wiICsgKG1vbnRoIDwgMTAgPyBcIjBcIiArIG1vbnRoIDogbW9udGgpICsgXCIvXCIgKyAoZGF0ZSA8IDEwID8gXCIwXCIgKyBkYXRlIDogZGF0ZSk7XHJcbiAgICAgICAgcmV0dXJuIHN5c3RlbVRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBwcmVmaXhJbnRlZ2VyKG51bSwgbGVuZ3RoKSB7XHJcbiAgICAgICAgcmV0dXJuIChBcnJheShsZW5ndGgpLmpvaW4oJzAnKSArIG51bSkuc2xpY2UoLWxlbmd0aCk7XHJcbiAgICB9XHJcbn0iLCIvKlxyXG4qIE9yYml0Q2FtZXJhIDM2MOinguWvn+eJqeS9k+ebuOaculxyXG4qIHVuaXR56ZyA6KaB5Y+W5ben5aSE55CGXHJcbiovXHJcblxyXG5pbXBvcnQgTW91c2VNYW5hZ2VyID0gbGF5YS5ldmVudHMuTW91c2VNYW5hZ2VyO1xyXG5pbXBvcnQgUXVhdGVybmlvbiA9IGxheWEuZDMubWF0aC5RdWF0ZXJuaW9uO1xyXG5pbXBvcnQgRXZlbnQgPSBMYXlhLkV2ZW50O1xyXG5pbXBvcnQgeyBNYXRoSGVscGVyIH0gZnJvbSBcIi4vTWF0aEhlbHBlclwiO1xyXG5leHBvcnQgY2xhc3MgT3JiaXRDYW1lcmEgZXh0ZW5kcyBMYXlhLlNjcmlwdDNEIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYWN0b3I6IG51bWJlciA9IDAuMTtcclxuXHJcbiAgICBwdWJsaWMgVGFyZ2V0OiBMYXlhLlNwcml0ZTNEO1xyXG4gICAgcHVibGljIFJvdGF0ZVNwZWVkOiBudW1iZXIgPSAyO1xyXG4gICAgcHVibGljIFNtb290aFRpbWU6IG51bWJlciA9IDE7XHJcbiAgICBwdWJsaWMgWU1pbkxpbWl0OiBudW1iZXIgPSAtMTgwO1xyXG4gICAgcHVibGljIFlNYXhMaW1pdDogbnVtYmVyID0gMTgwO1xyXG4gICAgcHVibGljIERpc3RhbmNlOiBudW1iZXIgPSAzNTtcclxuICAgIHB1YmxpYyBEaXN0YW5jZU1pbjogbnVtYmVyID0gMTU7XHJcbiAgICBwdWJsaWMgRGlzdGFuY2VNYXg6IG51bWJlciA9IDM1O1xyXG4gICAgcHVibGljIFBhdXNlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgaXNUd2VlbmluZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIFJhZGl1czogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcml2YXRlIG1vZGxlOiBMYXlhLlRyYW5zZm9ybTNEO1xyXG4gICAgcHJpdmF0ZSBtb2RsZVBhcmVudDogTGF5YS5UcmFuc2Zvcm0zRDtcclxuXHJcbiAgICBwcml2YXRlIEFuZ2xlSDogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgQW5nbGVWOiBudW1iZXIgPSAwO1xyXG4gICAgcHJpdmF0ZSBkb3duWDogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgZG93blk6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIGlzRG93bjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBtb3VzZVg6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIG1vdXNlWTogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgaXNNb3ZlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSB0bXBPdXRSb3RhdGlvbjogUXVhdGVybmlvbiA9IG5ldyBRdWF0ZXJuaW9uKDAsIDAsIDAsIDApO1xyXG4gICAgcHJpdmF0ZSBsYXN0RGlzdGFuY2U6IG51bWJlciA9IDA7XHJcbiAgICBwcml2YXRlIHRhcmdldE9mZnNldE1vdmVZOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIG9uQXdha2UoKSB7XHJcbiAgICAgICAgdGhpcy5tb2RsZSA9ICh0aGlzLm93bmVyIGFzIExheWEuU3ByaXRlM0QpLnRyYW5zZm9ybTtcclxuICAgICAgICB0aGlzLm1vZGxlUGFyZW50ID0gdGhpcy5tb2RsZS5fcGFyZW50O1xyXG4gICAgICAgIHZhciBhbmdsZXMgPSB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb25FdWxlcjtcclxuICAgICAgICB0aGlzLkFuZ2xlSCA9IGFuZ2xlcy55O1xyXG4gICAgICAgIHRoaXMuQW5nbGVWID0gYW5nbGVzLng7XHJcbiAgICAgICAgdGhpcy5pbml0RXZlbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIExheWEuc3RhZ2Uub2ZmKExheWEuRXZlbnQuTU9VU0VfRE9XTiwgdGhpcywgdGhpcy5vbk1vdXNlRG93bkhhbmRsZXIpO1xyXG4gICAgICAgIExheWEuc3RhZ2Uub2ZmKExheWEuRXZlbnQuTU9VU0VfVVAsIHRoaXMsIHRoaXMub25Nb3VzZVVwSGFuZGxlcik7XHJcbiAgICAgICAgTGF5YS5zdGFnZS5vZmYoTGF5YS5FdmVudC5NT1VTRV9XSEVFTCwgdGhpcywgdGhpcy5vbk1vdXNlcldoZWVsSGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFJvdGF0aW9uKCk6IExheWEuUXVhdGVybmlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Um90YXRpb24oaDogbnVtYmVyLCB2OiBudW1iZXIsIHVzZVR3ZWVuOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICBsZXQgdCA9IG5ldyBMYXlhLlF1YXRlcm5pb24odGhpcy5tb2RsZVBhcmVudC5sb2NhbFJvdGF0aW9uLngsIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbi55LCB0aGlzLm1vZGxlUGFyZW50LmxvY2FsUm90YXRpb24ueiwgdGhpcy5tb2RsZVBhcmVudC5sb2NhbFJvdGF0aW9uLncpO1xyXG4gICAgICAgIHRoaXMuQW5nbGVIID0gaDtcclxuICAgICAgICB0aGlzLkFuZ2xlViA9IHY7XHJcbiAgICAgICAgUXVhdGVybmlvbi5jcmVhdGVGcm9tWWF3UGl0Y2hSb2xsKHRoaXMuQW5nbGVIICogMC4wMDUgKiB0aGlzLlJvdGF0ZVNwZWVkLCB0aGlzLkFuZ2xlViAqIDAuMDA1ICogdGhpcy5Sb3RhdGVTcGVlZCwgMCwgdGhpcy50bXBPdXRSb3RhdGlvbik7XHJcbiAgICAgICAgaWYgKHVzZVR3ZWVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUd2VlbmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgIGZhaXJ5Z3VpLnR3ZWVuLkdUd2Vlbi50bzQodC54LCB0LnksIHQueiwgdC53LCB0aGlzLnRtcE91dFJvdGF0aW9uLngsIHRoaXMudG1wT3V0Um90YXRpb24ueSwgdGhpcy50bXBPdXRSb3RhdGlvbi56LCB0aGlzLnRtcE91dFJvdGF0aW9uLncsIDEpXHJcbiAgICAgICAgICAgICAgICAub25VcGRhdGUodGhpcy5vblR3ZWVuUm90YXRpb25VcGRhdGUsIHRoaXMpXHJcbiAgICAgICAgICAgICAgICAub25Db21wbGV0ZSh0aGlzLm9uVHdlZW5Sb3RhdGlvbkNvbXBlbHRlLCB0aGlzKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbiA9IHRoaXMudG1wT3V0Um90YXRpb247XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSB0d2VlblJvdGF0aW9uID0gbmV3IExheWEuUXVhdGVybmlvbigwLCAwLCAwLCAwKTtcclxuICAgIHByaXZhdGUgb25Ud2VlblJvdGF0aW9uVXBkYXRlKHR3ZWVuOiBmYWlyeWd1aS50d2Vlbi5HVHdlZW5lcikge1xyXG4gICAgICAgIHRoaXMudG1wT3V0Um90YXRpb24gPSBuZXcgTGF5YS5RdWF0ZXJuaW9uKHR3ZWVuLnZhbHVlLngsIHR3ZWVuLnZhbHVlLnksIHR3ZWVuLnZhbHVlLnosIHR3ZWVuLnZhbHVlLncpO1xyXG4gICAgICAgIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbiA9IHRoaXMudG1wT3V0Um90YXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvblR3ZWVuUm90YXRpb25Db21wZWx0ZSgpIHtcclxuICAgICAgICB0aGlzLmlzVHdlZW5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLlBhdXNlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXA6IExheWEuVmVjdG9yMyA9IG5ldyBMYXlhLlZlY3RvcjMoKTtcclxuICAgIG9uVXBkYXRlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBsZXQgYW4gPSAzLjE0IC8gMjtcclxuICAgICAgICAvLyBsZXQgbW92ZUggPSB0aGlzLm1vdXNlWCAqIE1hdGguY29zKGFuKSArIHRoaXMubW91c2VZICogTWF0aC5zaW4oYW4pO1xyXG4gICAgICAgIC8vIGxldCBtb3ZlViA9IHRoaXMubW91c2VYICogTWF0aC5zaW4oYW4pICsgdGhpcy5tb3VzZVkgKiBNYXRoLmNvcyhhbilcclxuICAgICAgICAvLyB0aGlzLkFuZ2xlSCArPSBtb3ZlSDtcclxuICAgICAgICAvLyB0aGlzLkFuZ2xlViArPSBtb3ZlVjtcclxuXHJcbiAgICAgICAgdGhpcy5tb2RsZVBhcmVudC5nZXRVcCh0aGlzLnVwKTtcclxuICAgICAgICBpZiAodGhpcy51cC55ID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLkFuZ2xlSCAtPSB0aGlzLm1vdXNlWDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLkFuZ2xlSCArPSB0aGlzLm1vdXNlWDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgKHRoaXMubW9kbGVQYXJlbnQucmlnaHQueCA+IDApIHtcclxuICAgICAgICAvLyAgICAgdGhpcy5BbmdsZVYgLT0gdGhpcy5tb3VzZVkgO1xyXG4gICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gICAgIHRoaXMuQW5nbGVWICs9IHRoaXMubW91c2VZIDtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5BbmdsZVYgLT0gdGhpcy5tb3VzZVk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLm1vdXNlWCA9IDA7XHJcbiAgICAgICAgdGhpcy5tb3VzZVkgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTGF0ZVVwZGF0ZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5QYXVzZSB8fCB0aGlzLmlzVHdlZW5pbmcpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgaWYgKHRoaXMuVGFyZ2V0ICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuVGFyZ2V0LnRyYW5zZm9ybS5sb2NhbFBvc2l0aW9uID0gbmV3IExheWEuVmVjdG9yMygwLCB0aGlzLnRhcmdldE9mZnNldE1vdmVZLCAwKTtcclxuICAgICAgICAgICAgdGhpcy5jYW1lcmVSb3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5jYW1lcmFab29tKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FtZXJlUm90YXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmlzRG93bikge1xyXG4gICAgICAgICAgICAvL3RoaXMuQW5nbGVWID0gTWF0aEhlbHBlci5DbGFtcCh0aGlzLkFuZ2xlViwgdGhpcy5ZTWluTGltaXQsIHRoaXMuWU1heExpbWl0KTtcclxuICAgICAgICAgICAgUXVhdGVybmlvbi5jcmVhdGVGcm9tWWF3UGl0Y2hSb2xsKHRoaXMuQW5nbGVIICogMC4wMDUgKiB0aGlzLlJvdGF0ZVNwZWVkLCB0aGlzLkFuZ2xlViAqIDAuMDA1ICogdGhpcy5Sb3RhdGVTcGVlZCwgMCwgdGhpcy50bXBPdXRSb3RhdGlvbik7XHJcbiAgICAgICAgICAgIHRoaXMubW9kbGVQYXJlbnQubG9jYWxSb3RhdGlvbiA9IHRoaXMudG1wT3V0Um90YXRpb247XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbWVyYVpvb20oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuUGF1c2UgfHwgdGhpcy5pc1R3ZWVuaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kbGUubG9jYWxQb3NpdGlvbi56ICE9IHRoaXMuRGlzdGFuY2UpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RsZS5sb2NhbFBvc2l0aW9uID0gbmV3IExheWEuVmVjdG9yMygwLCB0aGlzLnRhcmdldE9mZnNldE1vdmVZLCB0aGlzLkRpc3RhbmNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0RXZlbnRzKCkge1xyXG4gICAgICAgIExheWEuc3RhZ2Uub24oTGF5YS5FdmVudC5NT1VTRV9ET1dOLCB0aGlzLCB0aGlzLm9uTW91c2VEb3duSGFuZGxlcik7XHJcbiAgICAgICAgTGF5YS5zdGFnZS5vbihMYXlhLkV2ZW50Lk1PVVNFX1VQLCB0aGlzLCB0aGlzLm9uTW91c2VVcEhhbmRsZXIpO1xyXG4gICAgICAgIExheWEuc3RhZ2Uub24oTGF5YS5FdmVudC5NT1VTRV9XSEVFTCwgdGhpcywgdGhpcy5vbk1vdXNlcldoZWVsSGFuZGxlcik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uTW91c2VyV2hlZWxIYW5kbGVyKGU6IEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuUGF1c2UgfHwgdGhpcy5pc1R3ZWVuaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGRpc3RhbmNlOiBudW1iZXIgPSB0aGlzLmxhc3REaXN0YW5jZSArIGUuZGVsdGE7XHJcbiAgICAgICAgdGhpcy5EaXN0YW5jZSAtPSAoZGlzdGFuY2UgLSB0aGlzLmxhc3REaXN0YW5jZSkgKiB0aGlzLmZhY3RvcjtcclxuICAgICAgICB0aGlzLkRpc3RhbmNlID0gTWF0aEhlbHBlci5jbGFtcCh0aGlzLkRpc3RhbmNlLCB0aGlzLkRpc3RhbmNlTWluLCB0aGlzLkRpc3RhbmNlTWF4KTtcclxuICAgICAgICB0aGlzLmxhc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0T2Zmc2V0TW92ZVkgPSAtKHRoaXMuRGlzdGFuY2UgLSA4KSAvIHRoaXMuRGlzdGFuY2VNaW4gKiB0aGlzLlJhZGl1cztcclxuICAgICAgICB0aGlzLnRhcmdldE9mZnNldE1vdmVZID0gTWF0aEhlbHBlci5jbGFtcCh0aGlzLnRhcmdldE9mZnNldE1vdmVZLCAwLCB0aGlzLlJhZGl1cyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Nb3VzZURvd25IYW5kbGVyKGU6IEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuUGF1c2UgfHwgdGhpcy5pc1R3ZWVuaW5nKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGUudG91Y2hlcykge1xyXG4gICAgICAgICAgICB2YXIgdG91Y2hlczogQXJyYXk8YW55PiA9IGUudG91Y2hlcztcclxuICAgICAgICAgICAgaWYgKHRvdWNoZXMgJiYgdG91Y2hlcy5sZW5ndGggPT0gMikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0RGlzdGFuY2UgPSB0aGlzLmdldERpc3RhbmNlKHRvdWNoZXMpO1xyXG4gICAgICAgICAgICAgICAgTGF5YS5zdGFnZS5vbihFdmVudC5NT1VTRV9NT1ZFLCB0aGlzLCB0aGlzLm9uTW91c2VNb3ZlSGFuZGxlcik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25YID0gZS5zdGFnZVg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRvd25ZID0gZS5zdGFnZVk7XHJcbiAgICAgICAgICAgICAgICBMYXlhLnN0YWdlLm9uKExheWEuRXZlbnQuTU9VU0VfTU9WRSwgdGhpcywgdGhpcy5vbk1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kb3duWCA9IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVg7XHJcbiAgICAgICAgICAgIHRoaXMuZG93blkgPSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VZO1xyXG4gICAgICAgICAgICBMYXlhLnN0YWdlLm9uKExheWEuRXZlbnQuTU9VU0VfTU9WRSwgdGhpcywgdGhpcy5vbk1vdXNlTW92ZUhhbmRsZXIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc0Rvd24gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNNb3ZlZCA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbk1vdXNlVXBIYW5kbGVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLlBhdXNlIHx8IHRoaXMuaXNUd2VlbmluZykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNEb3duID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pc01vdmVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tb3VzZVggPSAwO1xyXG4gICAgICAgIHRoaXMubW91c2VZID0gMDtcclxuICAgICAgICBMYXlhLnN0YWdlLm9mZihMYXlhLkV2ZW50Lk1PVVNFX01PVkUsIHRoaXMsIHRoaXMub25Nb3VzZU1vdmVIYW5kbGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBvbk1vdXNlTW92ZUhhbmRsZXIoZTogRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5QYXVzZSB8fCB0aGlzLmlzVHdlZW5pbmcpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZS50b3VjaGVzKSB7XHJcbiAgICAgICAgICAgIHZhciB0b3VjaGVzOiBBcnJheTxhbnk+ID0gZS50b3VjaGVzO1xyXG4gICAgICAgICAgICBpZiAodG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGlzdGFuY2U6IG51bWJlciA9IHRoaXMuZ2V0RGlzdGFuY2UoZS50b3VjaGVzKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZhY3RvcjogbnVtYmVyID0gMC4wMTtcclxuICAgICAgICAgICAgICAgIHRoaXMuRGlzdGFuY2UgLT0gKGRpc3RhbmNlIC0gdGhpcy5sYXN0RGlzdGFuY2UpICogZmFjdG9yO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5EaXN0YW5jZSA9IE1hdGhIZWxwZXIuY2xhbXAodGhpcy5EaXN0YW5jZSwgdGhpcy5EaXN0YW5jZU1pbiwgdGhpcy5EaXN0YW5jZU1heCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRPZmZzZXRNb3ZlWSA9IC0odGhpcy5EaXN0YW5jZSAtIDgpIC8gdGhpcy5EaXN0YW5jZU1pbiAqIHRoaXMuUmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YXJnZXRPZmZzZXRNb3ZlWSA9IE1hdGhIZWxwZXIuY2xhbXAodGhpcy50YXJnZXRPZmZzZXRNb3ZlWSwgMCwgdGhpcy5SYWRpdXMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZVggPSBlLnN0YWdlWCAtIHRoaXMuZG93blg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3VzZVkgPSBlLnN0YWdlWSAtIHRoaXMuZG93blk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZG93blggIT09IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVggfHwgdGhpcy5kb3duWSAhPT0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW92ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvd25YID0gZS5zdGFnZVg7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3duWSA9IGUuc3RhZ2VZO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRG93bikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3VzZVggPSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VYIC0gdGhpcy5kb3duWDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW91c2VZID0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWSAtIHRoaXMuZG93blk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kb3duWCAhPT0gTW91c2VNYW5hZ2VyLmluc3RhbmNlLm1vdXNlWCB8fCB0aGlzLmRvd25ZICE9PSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VZKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc01vdmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuZG93blggPSBNb3VzZU1hbmFnZXIuaW5zdGFuY2UubW91c2VYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kb3duWSA9IE1vdXNlTWFuYWdlci5pbnN0YW5jZS5tb3VzZVk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6K6h566X5Lik5Liq6Kem5pG454K55LmL6Ze055qE6Led56a7Ki9cclxuICAgIHByaXZhdGUgZ2V0RGlzdGFuY2UocG9pbnRzOiBBcnJheTxhbnk+KTogbnVtYmVyIHtcclxuICAgICAgICB2YXIgZGlzdGFuY2U6IG51bWJlciA9IDA7XHJcbiAgICAgICAgaWYgKHBvaW50cyAmJiBwb2ludHMubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgdmFyIGR4OiBudW1iZXIgPSBwb2ludHNbMF0uc3RhZ2VYIC0gcG9pbnRzWzFdLnN0YWdlWDtcclxuICAgICAgICAgICAgdmFyIGR5OiBudW1iZXIgPSBwb2ludHNbMF0uc3RhZ2VZIC0gcG9pbnRzWzFdLnN0YWdlWTtcclxuICAgICAgICAgICAgZGlzdGFuY2UgPSBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGlzdGFuY2U7XHJcbiAgICB9XHJcbn0iXX0=
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment