util-helpers 4.6.0 → 4.7.1

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/README.md CHANGED
@@ -52,6 +52,7 @@ formatMoney('1000'); // => 1,000.00
52
52
  - [formatBankCard](https://doly-dev.github.io/util-helpers/module-Processor.html#.formatBankCard) - 格式化银行卡
53
53
  - [normalizeString](https://doly-dev.github.io/util-helpers/module-Processor.html#.normalizeString) - 规整化字符串,如果值为 `undefined` `null` 转为 '',如果不是字符串类型则转为字符串
54
54
  - [numberToChinese](https://doly-dev.github.io/util-helpers/module-Processor.html#.numberToChinese) - 数字转中文数字
55
+ - [padZero](https://doly-dev.github.io/util-helpers/module-Processor.html#.padZero) - 前置补零
55
56
  - [parseIdCard](https://doly-dev.github.io/util-helpers/module-Processor.html#.parseIdCard) - 解析身份证号码
56
57
  - [replaceChar](https://doly-dev.github.io/util-helpers/module-Processor.html#.replaceChar) - 替换字符,应用场景如:脱敏
57
58
  - [safeDate](https://doly-dev.github.io/util-helpers/module-Processor.html#.safeDate) - 创建一个 Date 实例,同 new Date
@@ -79,8 +80,8 @@ formatMoney('1000'); // => 1,000.00
79
80
  - [isBusinessLicense](https://doly-dev.github.io/util-helpers/module-Validator.html#.isBusinessLicense) - 营业执照,也叫工商注册号
80
81
  - [validatePassword](https://doly-dev.github.io/util-helpers/module-Validator.html#.validatePassword) - 验证密码
81
82
  - 其他
82
- - [calculateCursorPosition](https://doly-dev.github.io/util-helpers/module-Other.html#.calculateCursorPosition) - 等待时间返回 Promise
83
- - [waitTime](https://doly-dev.github.io/util-helpers/module-Other.html#.waitTime) - 计算光标位置
83
+ - [calculateCursorPosition](https://doly-dev.github.io/util-helpers/module-Other.html#.calculateCursorPosition) - 计算光标位置
84
+ - [waitTime](https://doly-dev.github.io/util-helpers/module-Other.html#.waitTime) - 等待时间返回 Promise
84
85
 
85
86
  ## 精选第三方工具库
86
87
 
@@ -2277,6 +2277,42 @@
2277
2277
  return realValue;
2278
2278
  }
2279
2279
 
2280
+ /**
2281
+ * 前置补零
2282
+ *
2283
+ * @static
2284
+ * @alias module:Processor.padZero
2285
+ * @since 4.7.0
2286
+ * @param {string|number} value 要处理的值
2287
+ * @param {number} [size=2] 指定字符串长度
2288
+ * @returns {string} 用零填充数字到给定长度的字符串
2289
+ * @example
2290
+ * padZero(5); // '05'
2291
+ * padZero('5'); // '05'
2292
+ *
2293
+ * padZero(12); // '12'
2294
+ * padZero('12'); // '12'
2295
+ *
2296
+ * padZero(688); // '688'
2297
+ * padZero('688'); // '688'
2298
+ *
2299
+ * padZero(688, 5); // '00688'
2300
+ * padZero('688', 5); // '00688'
2301
+ */
2302
+ function padZero(value, size = 2) {
2303
+ const str = normalizeString(value);
2304
+ const len = str.length;
2305
+
2306
+ if (typeof size !== 'number' || size < 0) {
2307
+ size = 0;
2308
+ }
2309
+
2310
+ if (len < size) {
2311
+ return '0'.repeat(size - len) + str;
2312
+ }
2313
+ return str;
2314
+ }
2315
+
2280
2316
  /**
2281
2317
  * 检查值是否为Number
2282
2318
  *
@@ -2518,7 +2554,8 @@
2518
2554
  * @since 4.6.0
2519
2555
  * @see 格式化手机号码 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatMobile|formatMobile}
2520
2556
  * @see 格式化银行卡号 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatBankCard|formatBankCard}
2521
- * @see 示例 {@link https://2950v9.csb.app/|点击查看}
2557
+ * @see h5示例 {@link https://2950v9.csb.app/|点击查看}
2558
+ * @see react示例 {@link https://33ccy9.csb.app/|点击查看}
2522
2559
  * @param {number} prevPos 赋值前的光标位置,onChange/onInput的光标位置 e.target.selectionEnd
2523
2560
  * @param {string} prevCtrlValue 上一个格式化后的值
2524
2561
  * @param {string} rawValue 当前输入原值
@@ -2593,6 +2630,7 @@
2593
2630
  exports.minus = minus;
2594
2631
  exports.normalizeString = normalizeString;
2595
2632
  exports.numberToChinese = numberToChinese;
2633
+ exports.padZero = padZero;
2596
2634
  exports.parseIdCard = parseIdCard;
2597
2635
  exports.plus = plus;
2598
2636
  exports.replaceChar = replaceChar;
@@ -2607,4 +2645,4 @@
2607
2645
  Object.defineProperty(exports, '__esModule', { value: true });
2608
2646
 
2609
2647
  })));
2610
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXJzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMvdHlwZS9pc1R5cGUuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc1N0cmluZy5qcyIsIi4uL3NyYy91dGlscy9jb252ZXJ0VG9TdHJpbmcuanMiLCIuLi9zcmMvaXNNb2JpbGUuanMiLCIuLi9zcmMvaXNUZWxlcGhvbmUuanMiLCIuLi9zcmMvaXNQb3N0Y29kZS5qcyIsIi4uL3NyYy9pc0lkQ2FyZC5qcyIsIi4uL3NyYy9pc0VtYWlsLmpzIiwiLi4vc3JjL2lzUVEuanMiLCIuLi9zcmMvaXNXWC5qcyIsIi4uL3NyYy9pc1ZlaGljbGUuanMiLCIuLi9zcmMvaXNCYW5rQ2FyZC5qcyIsIi4uL3NyYy9pc1NvY2lhbENyZWRpdENvZGUuanMiLCIuLi9zcmMvdXRpbHMvY29uZmlnLmpzIiwiLi4vc3JjL3ZhbGlkYXRlUGFzc3dvcmQuanMiLCIuLi9zcmMvaXNQYXNzd29yZC5qcyIsIi4uL3NyYy9pc1Bhc3Nwb3J0LmpzIiwiLi4vc3JjL2lzQ2hpbmVzZS5qcyIsIi4uL3NyYy9pc0lQdjQuanMiLCIuLi9zcmMvaXNJUHY2LmpzIiwiLi4vc3JjL2lzVXJsLmpzIiwiLi4vc3JjL2lzQnVzaW5lc3NMaWNlbnNlLmpzIiwiLi4vc3JjL2lzUHJvbWlzZUxpa2UuanMiLCIuLi9zcmMvaXNITUNhcmQuanMiLCIuLi9zcmMvaXNUV0NhcmQuanMiLCIuLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwiLi4vc3JjL3V0aWxzL21hdGgudXRpbC5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTmFOLmpzIiwiLi4vc3JjL2Zvcm1hdE1vbmV5LmpzIiwiLi4vc3JjL3V0aWxzL3R5cGUvaXNVbmRlZmluZWQuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc051bGwuanMiLCIuLi9zcmMvdXRpbHMvdHlwZS9pc05pbC5qcyIsIi4uL3NyYy9ub3JtYWxpemVTdHJpbmcuanMiLCIuLi9zcmMvZm9ybWF0QmFua0NhcmQuanMiLCIuLi9zcmMvcmVwbGFjZUNoYXIuanMiLCIuLi9zcmMvbnVtYmVyVG9DaGluZXNlLmpzIiwiLi4vc3JjL2J5dGVzVG9TaXplLmpzIiwiLi4vc3JjL3BhcnNlSWRDYXJkLmpzIiwiLi4vc3JjL2Jsb2JUb0RhdGFVUkwuanMiLCIuLi9zcmMvZGF0YVVSTFRvQmxvYi5qcyIsIi4uL3NyYy9zZXREYXRhVVJMUHJlZml4LmpzIiwiLi4vc3JjL3NhZmVEYXRlLmpzIiwiLi4vc3JjL2Zvcm1hdE1vYmlsZS5qcyIsIi4uL3NyYy91dGlscy90eXBlL2lzTnVtYmVyLmpzIiwiLi4vc3JjL3RpbWVzLmpzIiwiLi4vc3JjL3BsdXMuanMiLCIuLi9zcmMvbWludXMuanMiLCIuLi9zcmMvZGl2aWRlLmpzIiwiLi4vc3JjL3JvdW5kLmpzIiwiLi4vc3JjL3dhaXRUaW1lLmpzIiwiLi4vc3JjL2NhbGN1bGF0ZUN1cnNvclBvc2l0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLyoqXG4gKiDmo4DmtYvlgLznmoQgYHRvU3RyaW5nYCDnsbvlnotcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVuYW1lIOexu+Wei+WQjeensFxuICogQHJldHVybnMge2Jvb2xlYW59IOi/lOWbnuWAvOeahCBgdG9TdHJpbmdgIOexu+Wei+aYr+WQpuWMuemFjVxuICovXG5mdW5jdGlvbiBpc1R5cGUodmFsdWUsIHR5cGVuYW1lKSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gYFtvYmplY3QgJHt0eXBlbmFtZX1dYDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlO1xuIiwiaW1wb3J0IGlzVHlwZSBmcm9tICcuL2lzVHlwZSc7XG5cbi8qKlxuICog5qOA5p+l5YC85piv5ZCm5Li6U3RyaW5nXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzU3RyaW5nXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li6U3RyaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzU3RyaW5nKCdhYmMnKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzU3RyaW5nKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnU3RyaW5nJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3RyaW5nO1xuIiwiaW1wb3J0IGlzU3RyaW5nIGZyb20gJy4vdHlwZS9pc1N0cmluZyc7XG5cbi8qKlxuICog6L2s5o2i5Li65a2X56ym5LiyXG4gKlxuICogQHBhcmFtIHsqfSB2YWx1ZSDlgLxcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWtl+espuS4slxuICovXG5mdW5jdGlvbiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIGlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29udmVydFRvU3RyaW5nO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOaJi+acuuWPt+eggSAxMeS9jeaVsOWtl++8jOS7pTHlvIDlpLTvvIznrKzkuozkvY3mmK8zNDU2Nzg55YW25Lit5LiA5Liq77yM5ZCO6Z2i5YaN5YqgOeS4quaVsOWtl1xuY29uc3QgcmVnID0gL14xWzM0NTY3ODldXFxkezl9JC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65omL5py65Y+356CBXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNNb2JpbGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrmiYvmnLrlj7fnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNNb2JpbGUoJzEzMDAwMDAwMDAwJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNNb2JpbGUoJzEzMDAwJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNNb2JpbGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01vYmlsZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlm7rlrprnlLXor50g5pSv5oyB5Yy65Y+35ZKM5YiG5py65Y+3IDPvvZ405L2N5Yy65Y+377yM5LulMOW8gOWktO+8mzfvvZ445L2N55u05pKt5Y+377yM5LulMu+9njnlvIDlpLTvvJsx772eNuS9jeWIhuacuuWPt1xuY29uc3QgcmVnID0gL14oMFxcZHsyLDN9XFwtKT8oWzItOV1cXGR7Niw3fSkoXFwtXFxkezEsNn0pPyQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWbuuWumueUteivnVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVGVsZXBob25lXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65Zu65a6a55S16K+dXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVGVsZXBob25lKCcyMjAzMzIxMicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcwMjEtMjIwMzMyMTInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1RlbGVwaG9uZSgnMDIxLTIyMDMzMjEyLTEyMycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVGVsZXBob25lKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzVGVsZXBob25lKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNUZWxlcGhvbmU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6YKu5pS/57yW56CBXG5jb25zdCByZWcgPSAvXlxcZHs2fSQvO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uumCruaUv+e8luegge+8jDbkvY3mlbDlrZdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1Bvc3Rjb2RlXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66YKu5pS/57yW56CBXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUG9zdGNvZGUoJzEwMTExMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUG9zdGNvZGUoJzEyMycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzUG9zdGNvZGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bvc3Rjb2RlO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOi6q+S7veivgeWPt+ato+WImVxuY29uc3QgcmVnSWRDYXJkID0gL15bMS05XVxcZHs1fSgxOXwyMCk/XFxkezJ9KCgwWzEtOV0pfCgxWzAxMl0pKSgoWzAtMl1bMS05XSl8MTB8MjB8MzB8MzEpXFxkezN9KFxcZHxYKT8kL2k7XG5cbi8qKlxuICog5qCh6aqM56CB6K6h566XXG4gKlxuICogQHByaXZhdGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/kuK3ljY7kurrmsJHlhbHlkozlm73lhazmsJHouqvku73lj7fnoIF85Lit5Y2O5Lq65rCR5YWx5ZKM5Zu95YWs5rCR6Lqr5Lu95Y+356CBfVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0v5bGF5rCR6Lqr5Lu96K+B5Y+356CBfOWxheawkei6q+S7veivgeWPt+eggX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCDouqvku73or4Hlj7fnoIFcbiAqIEByZXR1cm5zIHtib29sZWFufSDmoKHpqoznoIHmmK/lkKbmraPnoa5cbiAqL1xuZnVuY3Rpb24gY2hlY2soaWQpIHtcbiAgbGV0IGluZGV4LCBzdW0sIG51bTtcbiAgZm9yIChzdW0gPSBpbmRleCA9IDA7IGluZGV4IDwgMTc7IGluZGV4KyspIHtcbiAgICBzdW0gKz0gKE1hdGgucG93KDIsIDE3IC0gaW5kZXgpICUgMTEpICogTnVtYmVyKGlkW2luZGV4XSk7XG4gIH1cbiAgbnVtID0gKDEyIC0gKHN1bSAlIDExKSkgJSAxMTtcbiAgaWYgKG51bSA8IDEwKSB7XG4gICAgcmV0dXJuIG51bSA9PT0gTnVtYmVyKGlkWzE3XSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGlkWzE3XSA9PSAnWCc7XG4gIH1cbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLoxOOS9jei6q+S7veivgeWPt+eggeOAgjxici8+5a695p2+5qih5byP5LiL77yM5pSv5oyBMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0lkQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j++8jOaUr+aMgTE15L2N6Lqr5Lu96K+B5Y+356CBXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmNoZWNrQ29kZT10cnVlXSDmmK/lkKbmoKHpqozmnIDlkI7kuIDkvY3moKHpqoznoIHvvIzku4XmlK/mjIExOOS9jei6q+S7veivgeWPt+eggVxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uui6q+S7veivgeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0lkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjg4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJZENhcmQoJzEzMDcwMTE5OTMxMDMwMjI4WCcpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0lkQ2FyZCgnMTMwNzAxMTk5MzEwMzAyMjhYJywgeyBjaGVja0NvZGU6IGZhbHNlIH0pOyAvLyDkuI3moKHpqozmoKHpqoznoIFcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lkQ2FyZCgnMzIwMzExNzcwNzA2MDAxJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzSWRDYXJkKCczMjAzMTE3NzA3MDYwMDEnLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNJZENhcmQodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSwgY2hlY2tDb2RlID0gdHJ1ZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICBpZiAodmFsdWVTdHIubGVuZ3RoID09PSAxNSAmJiBsb29zZSkge1xuICAgIHJldHVybiByZWdJZENhcmQudGVzdCh2YWx1ZVN0cik7XG4gIH1cblxuICBpZiAodmFsdWVTdHIubGVuZ3RoID09PSAxOCAmJiByZWdJZENhcmQudGVzdCh2YWx1ZVN0cikpIHtcbiAgICBpZiAoY2hlY2tDb2RlKSB7XG4gICAgICByZXR1cm4gY2hlY2sodmFsdWVTdHIpO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJZENhcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6YKu566xXG5jb25zdCByZWcgPSAvXltcXGRhLXpdKyhbXFwtXFwuXFxfXT9bXFxkYS16XSspKkBbXFxkYS16XSsoW1xcLVxcLl0/W1xcZGEtel0rKSooXFwuW2Etel17Mix9KSskL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6RW1haWxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0VtYWlsXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6RW1haWxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNFbWFpbCgnMTIzMkBxcS5jb20nKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0VtYWlsKCcxMjNAJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNFbWFpbCh2YWx1ZSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzRW1haWw7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gUVHlj7fmraPliJlcbmNvbnN0IHJlZyA9IC9eWzEtOV1cXGR7NCwxMH0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLpRUeWPt++8jOmdnjDlvIDlpLTvvIw16IezMTHkvY3mlbDlrZdcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1FRXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6UVHlj7dcbiAqIEBleGFtcGxlXG4gKlxuICogaXNRUSgnMTIzNDUnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1FRKCcxMjMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc1FRKHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNRUTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlvq7kv6Hlj7cgNuiHszIw5L2N77yM5Lul5a2X5q+N5byA5aS077yM5a2X5q+N77yM5pWw5a2X77yM5YeP5Y+377yI6L+e5o6l56ym77yJ77yM5LiL5YiS57q/XG5jb25zdCByZWcgPSAvXlthLXpdKFstX2EtejAtOV17NSwxOX0pKyQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrlvq7kv6Hlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1dYXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65b6u5L+h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzV1goJ2ExMjM0NScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzV1goJzEyMycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzV1godmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1dYO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOi9pueJjOWPt+ato+WImVxuY29uc3QgcmVnID0gL15b5Lqs5rSl5rKq5rid5YaA6LGr5LqR6L696buR5rmY55qW6bKB5paw6IuP5rWZ6LWj6YSC5qGC55SY5pmL6JKZ6ZmV5ZCJ6Ze96LS157Kk6Z2S6JeP5bed5a6B55C85L2/6aKGQS1aXXsxfVtBLVpdezF9KChbQS1aMC05XXs0fVtBLVowLTnmjILlraborabmuK/mvrNdezF9KXwoW0EtWjAtOV17NX1bREZdKXwoW0RGXVtBLVowLTldezV9KSkkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrovabniYzlj7fvvIzmlK/mjIHmlrDog73mupDlkozpnZ7mlrDog73mupDovabniYxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1ZlaGljbGVcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2JhaWtlLmJhaWR1LmNvbS9pdGVtL+i9pueJjOWPt3zovabniYzlj7d9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li66L2m54mM5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVmVoaWNsZSgn5LqsTDEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCRDEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCRjEyMzQ1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCMTIzNDVEJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNWZWhpY2xlKCfnsqRCMTIzNDVGJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc1ZlaGljbGUodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1ZlaGljbGU7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g6Z2eMOW8gOWktO+8jDEwfjIx5L2N5pWw5a2XXG5jb25zdCByZWcgPSAvXlsxLTldXFxkezksMjB9JC87XG5cbi8vIDh+MzDkvY3mlbDlrZdcbmNvbnN0IHJlZ0xvb3NlID0gL15cXGR7OCwzMH0kLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrpk7booYzljaHlj7fjgILmraPluLjmqKHlvI/vvIjpnZ4w5byA5aS077yMMTB+MjHkvY3mlbDlrZfvvInlrr3mnb7mqKHlvI/vvIg4fjMw5L2N5pWw5a2X77yJXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNCYW5rQ2FyZFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8va2YucXEuY29tL2ZhcS8xNzAxMTJBQm5tNmIxNzAxMTJGdnF1QW4uaHRtbHzluLjnlKjpk7booYzotKblj7fkvY3mlbDlj4LogIN9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP77yMOH4zMOS9jeaVsOWtl1xuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uumTtuihjOWNoeWPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0JhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwMDE4Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQmFua0NhcmQoJzEyMzQ1Njc4OScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0JhbmtDYXJkKCcxMjM0NTY3ODknLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNCYW5rQ2FyZCh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG5cbiAgaWYgKGxvb3NlKSB7XG4gICAgcmV0dXJuIHJlZ0xvb3NlLnRlc3QodmFsdWVTdHIpO1xuICB9XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQmFua0NhcmQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5Z+656GA6KeE5YiZ77yM55SxMTjkvY3mlbDlrZflkozlpKflhpnlrZfmr43nu4TmiJDvvIzkuI3kvb/nlKhJ44CBT+OAgVrjgIFT44CBVuOAglxuY29uc3QgYmFzZVJlZyA9IC9eW1xcZEEtSEotTlBRUlRVV1hZXXsyfVxcZHs2fVtcXGRBLUhKLU5QUVJUVVdYWV17MTB9JC87XG5cbi8vIOWfuuehgOWtl+espue7hOaIkFxuY29uc3QgYmFzZUNvZGVBcnIgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJUVVdYWScuc3BsaXQoJycpO1xuXG4vL+WKoOadg+WboOWtkFxuY29uc3Qgd2VpZ2h0RmFjdG9yID0gWzEsIDMsIDksIDI3LCAxOSwgMjYsIDE2LCAxNywgMjAsIDI5LCAyNSwgMTMsIDgsIDI0LCAxMCwgMzAsIDI4XTtcblxuLyoqXG4gKiDojrflj5blrZfnrKbkvY3nva5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGNvZGUg5a2X56ymXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlrZfnrKbmiYDlnKjln7rnoYDlrZfnrKbnmoTkvY3nva5cbiAqL1xuZnVuY3Rpb24gZ2V0QmFzZUNvZGVJbmRleChjb2RlKSB7XG4gIGxldCByZXQ7XG5cbiAgYmFzZUNvZGVBcnIuc29tZSgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaXRlbSA9PT0gY29kZSkge1xuICAgICAgcmV0ID0gaW5kZXg7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog6K6h566X5qCh6aqM56CBXG4gKlxuICogQHByaXZhdGVcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IHByZUNvZGUg57uf5LiA5Luj56CB5YmNMTfkvY1cbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagoemqjOeggVxuICovXG5mdW5jdGlvbiBzdW1DaGVja0NvZGUocHJlQ29kZSkge1xuICAvLyBjb25zdCBwcmVDb2RlQXJyID0gcHJlQ29kZS5zcGxpdCgnJyk7XG5cbiAgbGV0IHRvdGFsID0gMDtcblxuICAvLyDorqHnrpflrZfnrKbkvY3nva7lr7nlupTluo/lj7flkozliqDmnYPlm6DlrZDnmoTkuZjnp6/vvIzmgLvlkoxcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxNzsgaSsrKSB7XG4gICAgLy8g5a2X56ym5L2N572u5a+55bqU55qE5Z+656GA57yW56CB5bqP5Y+3XG4gICAgY29uc3QgaW5kZXggPSBnZXRCYXNlQ29kZUluZGV4KHByZUNvZGVbaV0pO1xuICAgIC8vIOWKoOadg+WboOWtkFxuICAgIGNvbnN0IHdmID0gd2VpZ2h0RmFjdG9yW2ldO1xuICAgIC8vIOiuoeeul+W6j+WPt+WSjOWKoOadg+WboOWtkOeahOS5mOenr++8jOW5tuiuoeeul+e6p+aVsOS5i+WSjFxuICAgIHRvdGFsICs9IGluZGV4ICogd2Y7XG4gIH1cblxuICAvLyDorqHnrpfmlbTmlbDmsYLkvZnlh73mlbBNT0RcbiAgY29uc3QgcmVtYWluZGVyID0gdG90YWwgJSAzMTtcbiAgLy8g5qCh6aqM56CB5a2X56ym5YC85bqP5Y+3XG4gIGNvbnN0IGNoZWNrQ29kZUluZGV4ID0gMzEgLSByZW1haW5kZXI7XG5cbiAgcmV0dXJuIGJhc2VDb2RlQXJyW2NoZWNrQ29kZUluZGV4XTtcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIHvvIzkuZ/lj6vkuInor4HlkIjkuIDnu4Tnu4fku6PnoIHjgILnlLExOOS9jeaVsOWtl+WSjOWkp+WGmeWtl+avjee7hOaIkO+8jOS4jeS9v+eUqEnjgIFP44CBWuOAgVPjgIFW44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNTb2NpYWxDcmVkaXRDb2RlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpc291cmNlLm9yZy96aC1oYW5zL0dCXzMyMTAwLTIwMTVf5rOV5Lq65ZKM5YW25LuW57uE57uH57uf5LiA56S+5Lya5L+h55So5Luj56CB57yW56CB6KeE5YiZfEdCIDMyMTAwLTIwMTUg5rOV5Lq65ZKM5YW25LuW57uE57uH57uf5LiA56S+5Lya5L+h55So5Luj56CB57yW56CB6KeE5YiZfVxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j+OAguWmguaenOS4unRydWXvvIzkuI3moKHpqozmoKHpqozkvY3jgIJcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLrnu5/kuIDnpL7kvJrkv6HnlKjku6PnoIFcbiAqIEBleGFtcGxlXG4gKlxuICogaXNTb2NpYWxDcmVkaXRDb2RlKCc5MTM1MDEwME0wMDAxMDBZNDMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1NvY2lhbENyZWRpdENvZGUoJzkxMzUwMTAwTTAwMDEwMFk0QScpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiAvLyDlrr3mnb7mqKHlvI/vvIzkuI3moKHpqozmoKHpqozkvY3jgILmiYDku6XkuZ/lj6/ku6XpgJrov4dcbiAqIGlzU29jaWFsQ3JlZGl0Q29kZSgnOTEzNTAxMDBNMDAwMTAwWTRBJywge2xvb3NlOiB0cnVlfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICovXG5mdW5jdGlvbiBpc1NvY2lhbENyZWRpdENvZGUodmFsdWUsIHsgbG9vc2UgPSBmYWxzZSB9ID0ge30pIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuXG4gIGNvbnN0IHBhc3NCYXNlUnVsZSA9IGJhc2VSZWcudGVzdCh2YWx1ZVN0cik7XG5cbiAgLy8g5a695p2+5qih5byPIOaIliDln7rnoYDop4TliJnkuI3pgJrov4fnm7TmjqXov5Tlm55cbiAgaWYgKGxvb3NlIHx8ICFwYXNzQmFzZVJ1bGUpIHtcbiAgICByZXR1cm4gcGFzc0Jhc2VSdWxlO1xuICB9XG5cbiAgLy8g5YmNMTfkvY1cbiAgY29uc3QgcHJlQ29kZSA9IHZhbHVlU3RyLnN1YnN0cmluZygwLCAxNyk7XG4gIC8vIOagoemqjOeggVxuICBjb25zdCBsYXN0Q29kZSA9IHZhbHVlU3RyLnN1YnN0cmluZyh2YWx1ZVN0ci5sZW5ndGggLSAxKTtcbiAgLy8g6K6h566X5qCh6aqM56CBXG4gIGNvbnN0IGNoZWNrQ29kZSA9IHN1bUNoZWNrQ29kZShwcmVDb2RlKTtcblxuICByZXR1cm4gbGFzdENvZGUgPT09IGNoZWNrQ29kZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTb2NpYWxDcmVkaXRDb2RlO1xuIiwiY29uc3QgY29uZmlnID0ge1xuICAvLyDnpoHnlKh3YXJuaW5n5o+Q56S6XG4gIGRpc2FibGVXYXJuaW5nOiB0cnVlXG59O1xuXG4vKipcbiAqIOiuvue9ruemgeatondhcm5pbmfmj5DnpLpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6RGVidWcuZm9ybWF0QmFua0NhcmRcbiAqIEBzaW5jZSAzLjYuMVxuICogQHBhcmFtIHtib29sZWFufSBib29sIOaYr+WQpuemgeatondhcm5pbmfmj5DnpLpcbiAqL1xuZnVuY3Rpb24gc2V0RGlzYWJsZVdhcm5pbmcoYm9vbCkge1xuICBjb25maWcuZGlzYWJsZVdhcm5pbmcgPSAhIWJvb2w7XG59XG5cbmV4cG9ydCB7IGNvbmZpZywgc2V0RGlzYWJsZVdhcm5pbmcgfTtcbiIsImltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnTnVtYmVyID0gL1tcXGRdLztcbmNvbnN0IHJlZ0xvd2VyQ2FzZUxldHRlciA9IC9bYS16XS87XG5jb25zdCByZWdVcHBlckNhc2VMZXR0ZXIgPSAvW0EtWl0vO1xuY29uc3QgcmVnQWxsTnVtYmVyQW5kTGV0dGVyID0gL1tcXGR8YS16XS9naTtcblxuLyoqXG4gKiDmmK/lkKbljIXlkKvmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4Dmn6XnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvmlbDlrZdcbiAqL1xuZnVuY3Rpb24gaGFzTnVtYmVyKHZhbCkge1xuICByZXR1cm4gcmVnTnVtYmVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlsI/lhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzTG93ZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnTG93ZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbljIXlkKvlpKflhpnlrZfmr41cbiAqL1xuZnVuY3Rpb24gaGFzVXBwZXJDYXNlTGV0dGVyKHZhbCkge1xuICByZXR1cm4gcmVnVXBwZXJDYXNlTGV0dGVyLnRlc3QodmFsKTtcbn1cblxuLyoqXG4gKiDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHZhbCDmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrljYHlha3ov5vliLZcbiAqL1xuZnVuY3Rpb24gaGFzSGV4KHZhbCkge1xuICByZXR1cm4gdmFsLmluZGV4T2YoJ1xcXFx4JykgPiAtMSB8fCB2YWwuaW5kZXhPZignXFxcXHUnKSA+IC0xO1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+eJueauiuWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFyc10g54m55q6K5a2X56ymXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5YyF5ZCr54m55q6K5a2X56ymXG4gKi9cbmZ1bmN0aW9uIGhhc1NwZWNpYWxDaGFyYWN0ZXIodmFsLCBjaGFycyA9ICcnKSB7XG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzcGVjaWFsQ2hhcnMgPSB2YWwucmVwbGFjZShyZWdBbGxOdW1iZXJBbmRMZXR0ZXIsICcnKTtcbiAgY29uc3QgcmVnQ2hhcnMgPSBoYXNIZXgoY2hhcnMpID8gbmV3IFJlZ0V4cChgWyR7Y2hhcnN9XWApIDogbnVsbDtcblxuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG5cbiAgbGV0IHJldCA9IGZhbHNlO1xuICBzcGVjaWFsQ2hhcnMuc3BsaXQoJycpLnNvbWUoKGNoYXJJdGVtKSA9PiB7XG4gICAgaWYgKGNoYXJzLmluZGV4T2YoY2hhckl0ZW0pID4gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsIOajgOa1i+eahOWAvFxuICogQHBhcmFtIHtzdHJpbmd9IGNoYXJzIOmdnuazleWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuWMheWQq+mdnuazleWtl+esplxuICovXG5mdW5jdGlvbiBoYXNVbmFsbG93YWJsZUNoYXJhY3Rlcih2YWwsIGNoYXJzID0gJycpIHtcbiAgY29uc3Qgc3BlY2lhbENoYXJzID0gdmFsLnJlcGxhY2UocmVnQWxsTnVtYmVyQW5kTGV0dGVyLCAnJyk7XG5cbiAgaWYgKCFjaGFycyAmJiBzcGVjaWFsQ2hhcnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHJlZ0NoYXJzID0gaGFzSGV4KGNoYXJzKSA/IG5ldyBSZWdFeHAoYFteJHtjaGFyc31dYCkgOiBudWxsO1xuICBpZiAocmVnQ2hhcnMpIHtcbiAgICByZXR1cm4gcmVnQ2hhcnMudGVzdChzcGVjaWFsQ2hhcnMpO1xuICB9XG4gIGxldCByZXQgPSBmYWxzZTtcbiAgc3BlY2lhbENoYXJzLnNwbGl0KCcnKS5zb21lKChjaGFySXRlbSkgPT4ge1xuICAgIGlmIChjaGFycy5pbmRleE9mKGNoYXJJdGVtKSA9PT0gLTEpIHtcbiAgICAgIHJldCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBhc3N3b3JkQ29udGFpbmVzIC0g6aqM6K+B5a+G56CB55qE5YyF5ZCr5YaF5a65XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG51bWJlciAtIOWMheWQq+aVsOWtl1xuICogQHByb3BlcnR5IHtib29sZWFufSBsb3dlckNhc2VMZXR0ZXIgLSDljIXlkKvlsI/lhpnlrZfmr41cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXBwZXJDYXNlTGV0dGVyIC0g5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHNwZWNpYWxDaGFyYWN0ZXIgLSDljIXlkKvnibnmrorlrZfnrKZcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdW5hbGxvd2FibGVDaGFyYWN0ZXIgLSDljIXlkKvpnZ7ms5XlrZfnrKZcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRlUGFzc3dvcmRSZXR1cm4gLSDpqozor4Hnu5PmnpxcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdmFsaWRhdGVkIC0g6aqM6K+B57uT5p6c77yM5qC55o2u5a+G56CB5by65bqm44CB5piv5ZCm5YyF5ZCr6Z2e5rOV5a2X56ym5b6X5Ye6XG4gKiBAcHJvcGVydHkge251bWJlcn0gbGV2ZWwgLSDlvLrluqbnuqfliKvvvIzljIXlkKvmlbDlrZcv5aSn5bCP5YaZ5a2X5q+NL+eJueauiuWtl+esplxuICogQHByb3BlcnR5IHtQYXNzd29yZENvbnRhaW5lc30gY29udGFpbmVzIC0g5YyF5ZCr5YaF5a65XG4gKi9cblxuLyoqXG4gKiDpqozor4Hlr4bnoIHvvIjmlbDlrZfjgIHlpKflsI/lhpnlrZfmr43jgIHnibnmrorlrZfnrKbjgIHpnZ7ms5XlrZfnrKbvvIlcbiAqXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS9BU0NJSSMzfEFTQ0lJfVxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHNpbmNlIDMuNy4wXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmxldmVsPTJdIOWvhueggeW8uuW6piAxLeWMheWQq+S4gOenjeWtl+espiAyLeWMheWQq+S4pOenjeWtl+espiAzLeWMheWQq+S4ieenjeWtl+espuOAgu+8iOWkp+WGmeWtl+avjeOAgeWwj+WGmeWtl+avjeOAgeaVsOWtl+OAgeeJueauiuWtl+espu+8iVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5pZ25vcmVDYXNlPWZhbHNlXSDmmK/lkKblv73nlaXlpKflsI/lhpnvvIzkuLogdHVyZSDml7bvvIzlpKflsI/lhpnlrZfmr43op4bkuLrkuIDnp43lrZfnrKZcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zcGVjaWFsPVwiIUAjJCVeJiooKS09XytbXVxcfHt9LC4vPzw+flwiXSDmlK/mjIHnmoTnibnmrorlrZfnrKZcbiAqIEByZXR1cm5zIHtWYWxpZGF0ZVBhc3N3b3JkUmV0dXJufSDpqozor4Hnu5PmnpxcbiAqIEBleGFtcGxlXG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnYTEyMzQ1Njc4Jyk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IHRydWUsIC8vIOmqjOivgee7k+aenO+8jOagueaNruWvhueggeW8uuW6puOAgeaYr+WQpuWMheWQq+mdnuazleWtl+espuW+l+WHulxuICogICBsZXZlbDogMiwgLy8g5by65bqm57qn5YirXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSwgLy8g5YyF5ZCr5pWw5a2XXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLCAvLyDljIXlkKvlsI/lhpnlrZfmr41cbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IGZhbHNlLCAvLyDljIXlkKvlpKflhpnlrZfmr41cbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiBmYWxzZSwgLy8g5YyF5ZCr54m55q6K5a2X56ymXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlIC8vIOWMheWQq+mdnuazleWtl+esplxuICogICB9XG4gKiB9XG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnYTEyMzQ1Njc4Jywge2xldmVsOiAzfSk7XG4gKiAvLyA9PlxuICoge1xuICogICB2YWxpZGF0ZWQ6IGZhbHNlLFxuICogICBsZXZlbDogMixcbiAqICAgY29udGFpbmVzOiB7XG4gKiAgICAgbnVtYmVyOiB0cnVlLFxuICogICAgIGxvd2VyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICB1cHBlckNhc2VMZXR0ZXI6IGZhbHNlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IGZhbHNlLFxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBmYWxzZVxuICogICB9XG4gKiB9XG4gKlxuICogdmFsaWRhdGVQYXNzd29yZCgnX0Fh5LiA5LqM5LiJNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogZmFsc2UsXG4gKiAgIGxldmVsOiAzLFxuICogICBjb250YWluZXM6IHtcbiAqICAgICBudW1iZXI6IHRydWUsXG4gKiAgICAgbG93ZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHVwcGVyQ2FzZUxldHRlcjogdHJ1ZSxcbiAqICAgICBzcGVjaWFsQ2hhcmFjdGVyOiB0cnVlLFxuICogICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiB0cnVlXG4gKiAgIH1cbiAqIH1cbiAqXG4gKiAvLyDoh6rlrprkuYnnibnmrorlrZfnrKZcbiAqIHZhbGlkYXRlUGFzc3dvcmQoJ19BYeS4gOS6jOS4iTQ1Njc4Jywge2xldmVsOiAzLCBpZ25vcmVDYXNlOiB0cnVlLCBzcGVjaWFsOiAnX+S4gOS6jOS4iSd9KTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIHZhbGlkYXRlZDogdHJ1ZSxcbiAqICAgbGV2ZWw6IDMsXG4gKiAgIGNvbnRhaW5lczoge1xuICogICAgIG51bWJlcjogdHJ1ZSxcbiAqICAgICBsb3dlckNhc2VMZXR0ZXI6IHRydWUsXG4gKiAgICAgdXBwZXJDYXNlTGV0dGVyOiB0cnVlLFxuICogICAgIHNwZWNpYWxDaGFyYWN0ZXI6IHRydWUsXG4gKiAgICAgdW5hbGxvd2FibGVDaGFyYWN0ZXI6IGZhbHNlXG4gKiAgIH1cbiAqIH1cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVQYXNzd29yZCh2YWx1ZSwgeyBsZXZlbCA9IDIsIGlnbm9yZUNhc2UgPSBmYWxzZSwgc3BlY2lhbCA9ICdcXFxceDIxLVxcXFx4MkZcXFxceDNBLVxcXFx4NDBcXFxceDVCLVxcXFx4NjBcXFxceDdCLVxcXFx4N0UnIH0gPSB7fSkge1xuICBsZXQgdmFsU3RyID0gdmFsdWU7XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWNvbmZpZy5kaXNhYmxlV2FybmluZykge1xuICAgICAgY29uc29sZS53YXJuKGBbdmFsaWRhdGVQYXNzd29yZF0gdmFsdWUgbXVzdCBiZSBhIHN0cmluZy5gKTtcbiAgICB9XG4gICAgdmFsU3RyID0gJyc7XG4gIH1cblxuICBsZXQgY3VycmVudExldmVsID0gMDtcblxuICAvLyDljIXlkKvmlbDlrZdcbiAgY29uc3QgY29udGFpbmVzTnVtYmVyID0gaGFzTnVtYmVyKHZhbFN0cik7XG4gIC8vIOWMheWQq+Wwj+WGmeWtl+avjVxuICBjb25zdCBjb250YWluZXNMb3dlckNhc2VMZXR0ZXIgPSBoYXNMb3dlckNhc2VMZXR0ZXIodmFsU3RyKTtcbiAgLy8g5YyF5ZCr5aSn5YaZ5a2X5q+NXG4gIGNvbnN0IGNvbnRhaW5lc1VwcGVyQ2FzZUxldHRlciA9IGhhc1VwcGVyQ2FzZUxldHRlcih2YWxTdHIpO1xuICAvLyDljIXlkKvnibnmrorlrZfnrKZcbiAgY29uc3QgY29udGFpbmVzU3BlY2lhbENoYXJhY3RlciA9IGhhc1NwZWNpYWxDaGFyYWN0ZXIodmFsU3RyLCBzcGVjaWFsKTtcbiAgLy8g5YyF5ZCr6Z2e5rOV5a2X56ymXG4gIGNvbnN0IGNvbnRhaW5lc1VuYWxsb3dhYmxlQ2hhcmFjdGVyID0gaGFzVW5hbGxvd2FibGVDaGFyYWN0ZXIodmFsU3RyLCBzcGVjaWFsKTtcblxuICBpZiAoY29udGFpbmVzTnVtYmVyKSB7XG4gICAgY3VycmVudExldmVsICs9IDE7XG4gIH1cblxuICBpZiAoaWdub3JlQ2FzZSkge1xuICAgIC8vIOS4jeWMuuWIhuWkp+Wwj+WGmVxuICAgIGlmIChjb250YWluZXNMb3dlckNhc2VMZXR0ZXIgfHwgY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyKSB7XG4gICAgICBjdXJyZW50TGV2ZWwgKz0gMTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8g5Yy65YiG5aSn5bCP5YaZXG4gICAgaWYgKGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlcikge1xuICAgICAgY3VycmVudExldmVsICs9IDE7XG4gICAgfVxuICAgIGlmIChjb250YWluZXNVcHBlckNhc2VMZXR0ZXIpIHtcbiAgICAgIGN1cnJlbnRMZXZlbCArPSAxO1xuICAgIH1cbiAgfVxuXG4gIGlmIChjb250YWluZXNTcGVjaWFsQ2hhcmFjdGVyKSB7XG4gICAgY3VycmVudExldmVsICs9IDE7XG4gIH1cblxuICAvLyDpqozor4Hnu5PmnpxcbiAgY29uc3QgdmFsaWRhdGVkID0gY3VycmVudExldmVsID49IGxldmVsICYmICFjb250YWluZXNVbmFsbG93YWJsZUNoYXJhY3RlcjtcblxuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlZCxcbiAgICBsZXZlbDogY3VycmVudExldmVsLFxuICAgIGNvbnRhaW5lczoge1xuICAgICAgbnVtYmVyOiBjb250YWluZXNOdW1iZXIsXG4gICAgICBsb3dlckNhc2VMZXR0ZXI6IGNvbnRhaW5lc0xvd2VyQ2FzZUxldHRlcixcbiAgICAgIHVwcGVyQ2FzZUxldHRlcjogY29udGFpbmVzVXBwZXJDYXNlTGV0dGVyLFxuICAgICAgc3BlY2lhbENoYXJhY3RlcjogY29udGFpbmVzU3BlY2lhbENoYXJhY3RlcixcbiAgICAgIHVuYWxsb3dhYmxlQ2hhcmFjdGVyOiBjb250YWluZXNVbmFsbG93YWJsZUNoYXJhY3RlclxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsaWRhdGVQYXNzd29yZDtcbiIsImltcG9ydCB2YWxpZGF0ZVBhc3N3b3JkIGZyb20gJy4vdmFsaWRhdGVQYXNzd29yZCc7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm56ym5ZCI5a+G56CB5by65bqmXG4gKiA8cD48c3Ryb25nPuazqOaEj++8muivpeagoemqjOWPquagoemqjOaYr+WQpuWtmOWcqOS4jeWQjOWtl+espijlpKflsI/lhpnlrZfmr43jgIHmlbDlrZfjgIHnibnmrornrKblj7cp77yM5LiN5Yik5pat6ZW/5bqm44CCPC9zdHJvbmc+PC9wPlxuICogPHA+PGk+5aaC5p6c6ZyA6KaB5pu057uG6Ie055qE6aqM6K+B77yM6K+35L2/55SoIDxhIGhyZWY9XCIjLnZhbGlkYXRlUGFzc3dvcmRcIj52YWxpZGF0ZVBhc3N3b3JkPC9hPjwvaT48L3A+XG4gKlxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vYmFpa2UuYmFpZHUuY29tL2l0ZW0vQVNDSUkjM3xBU0NJSX1cbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUGFzc3dvcmRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHJlcXVpcmVzIG1vZHVsZTpWYWxpZGF0b3IudmFsaWRhdGVQYXNzd29yZFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGV2ZWw9Ml0g5a+G56CB5by65bqmIDEt5YyF5ZCr5LiA56eN5a2X56ymIDIt5YyF5ZCr5Lik56eN5a2X56ymIDMt5YyF5ZCr5LiJ56eN5a2X56ym44CC77yI5aSn5YaZ5a2X5q+N44CB5bCP5YaZ5a2X5q+N44CB5pWw5a2X44CB54m55q6K5a2X56ym77yJXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmlnbm9yZUNhc2U9ZmFsc2VdIOaYr+WQpuW/veeVpeWkp+Wwj+WGme+8jOS4uiB0dXJlIOaXtu+8jOWkp+Wwj+WGmeWtl+avjeinhuS4uuS4gOenjeWtl+esplxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNwZWNpYWw9XCIhQCMkJV4mKigpLT1fK1tdXFx8e30sLi8/PD5+XCJdIOaUr+aMgeeahOeJueauiuWtl+esplxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuespuWQiOWvhueggeW8uuW6plxuICogQGV4YW1wbGVcbiAqXG4gKiBpc1Bhc3N3b3JkKCdhMTIzNDU2NzgnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1Bhc3N3b3JkKCdhMTIzNDU2NzgnLCB7bGV2ZWw6IDN9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNQYXNzd29yZCgnQWExMjM0NTY3OCcsIHtsZXZlbDogM30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3dvcmQoJ0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNQYXNzd29yZCgnX0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDku4XmlK/mjIEg5pWw5a2X44CB5a2X5q+N44CB54m55q6K5a2X56ym77yM5YW25LuW5a2X56ym5aaC5Lit5paH5a2X56ym5piv5qCh6aqM5LiN6YCa6L+H55qEXG4gKiBpc1Bhc3N3b3JkKCdfQWHkuIDkuozkuIk0NTY3OCcsIHtsZXZlbDogMywgaWdub3JlQ2FzZTogdHJ1ZX0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc1Bhc3N3b3JkKCcgX0FhMTIzNDU2NzgnLCB7bGV2ZWw6IDMsIGlnbm9yZUNhc2U6IHRydWV9KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUGFzc3dvcmQodmFsdWUsIHsgbGV2ZWwgPSAyLCBpZ25vcmVDYXNlID0gZmFsc2UsIHNwZWNpYWwgPSAnXFxcXHgyMS1cXFxceDJGXFxcXHgzQS1cXFxceDQwXFxcXHg1Qi1cXFxceDYwXFxcXHg3Qi1cXFxceDdFJyB9ID0ge30pIHtcbiAgcmV0dXJuIHZhbGlkYXRlUGFzc3dvcmQodmFsdWUsIHsgbGV2ZWwsIGlnbm9yZUNhc2UsIHNwZWNpYWwgfSkudmFsaWRhdGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bhc3N3b3JkO1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIOaKpOeFp+WPtyA55L2N77yM5YyF5ous6aaW5a2X5q+N5ZKM5pWw5a2X77yb5pSv5oyBIOaZrumAmuaKpOeFpyhFKinjgIHlpJbkuqTmiqTnhacoREUp44CB5YWs5Yqh5oqk54WnKFNFKeOAgeWFrOWKoeaZrumAmuaKpOeFpyhQRSnjgIHpppnmuK/nibnljLrmiqTnhacoSy9LSinjgIHmvrPpl6jnibnljLrmiqTnhacoTUEpXG5jb25zdCByZWcgPSAvXigoZVtcXGRhLXpdKXwoZGUpfChzZSl8KHBlKXwoa1tcXGRhLXpdKXwoa2opfChtYSkpW1xcZGEtel17N30kL2k7XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li65oqk54Wn5Y+3XG4gKiDmlK/mjIHmma7pgJrmiqTnhacoRSop44CB5aSW5Lqk5oqk54WnKERFKeOAgeWFrOWKoeaKpOeFpyhTRSnjgIHlhazliqHmma7pgJrmiqTnhacoUEUp44CB6aaZ5riv54m55Yy65oqk54WnKEsvS0op44CB5r6z6Zeo54m55Yy65oqk54WnKE1BKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzUGFzc3BvcnRcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/kuK3ljY7kurrmsJHlhbHlkozlm73miqTnhacj5Liq5Lq66LWE5paZ6aG1fOS4reWNjuS6uuawkeWFseWSjOWbveaKpOeFpyPkuKrkurrotYTmlpnpobV9XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65oqk54Wn5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUGFzc3BvcnQoJ0UxMjM0NTY3OCcpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzUGFzc3BvcnQoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzUGFzc3BvcnQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1Bhc3Nwb3J0O1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbmNvbnN0IGNoaW5lc2VEaWN0aW9uYXJ5ID0ge1xuICAvLyDln7rmnKzmsYnlrZdcbiAgY2hpbmVzZUJhc2ljOiAnW1xcdTRlMDAtXFx1OWZhNV0nLFxuXG4gIC8vIOWfuuacrOaxieWtl+ihpeWFhVxuICBjaGluZXNlRXh0ZW5kOiAnW1xcdTllYTYtXFx1OWZlZl0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlUFcbiAgY2hpbmVzZUV4dGVuZEE6ICdbXFx1MzQwMC1cXHU0REI1XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVQlxuICBjaGluZXNlRXh0ZW5kQjogJ1tcXHV7MjAwMDB9LVxcdXsyQTZENn1dJyxcblxuICAvLyDmsYnlrZfmianlsZVDXG4gIGNoaW5lc2VFeHRlbmRDOiAnW1xcdXsyQTcwMH0tXFx1ezJCNzM0fV0nLFxuXG4gIC8vIOaxieWtl+aJqeWxlURcbiAgY2hpbmVzZUV4dGVuZEQ6ICdbXFx1ezJCNzQwfS1cXHV7MkI4MUR9XScsXG5cbiAgLy8g5rGJ5a2X5omp5bGVRVxuICBjaGluZXNlRXh0ZW5kRTogJ1tcXHV7MkI4MjB9LVxcdXsyQ0VBMX1dJyxcblxuICAvLyDmsYnlrZfmianlsZVGXG4gIGNoaW5lc2VFeHRlbmRGOiAnW1xcdXsyQ0VCMH0tXFx1ezJFQkUwfV0nXG59O1xuXG5sZXQgbG9vc2VDaGluZXNlUmVnRXhwID0gY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUJhc2ljICsgJysnO1xuXG5sZXQgY2hpbmVzZVJlZ0V4cCA9ICdeJyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICcrJCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbmNvbnN0IHN1cHBvcnRSZWdFeHBVbmljb2RlID0gUmVnRXhwLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgndW5pY29kZScpO1xuXG5pZiAoc3VwcG9ydFJlZ0V4cFVuaWNvZGUpIHtcbiAgbG9vc2VDaGluZXNlUmVnRXhwID0gJyg/OicgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlQmFzaWMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEEgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQiArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRDICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRGICsgJykrJztcbiAgY2hpbmVzZVJlZ0V4cCA9ICdeKD86JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VCYXNpYyArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmQgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kQSArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRCICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEMgKyAnfCcgKyBjaGluZXNlRGljdGlvbmFyeS5jaGluZXNlRXh0ZW5kRCArICd8JyArIGNoaW5lc2VEaWN0aW9uYXJ5LmNoaW5lc2VFeHRlbmRFICsgJ3wnICsgY2hpbmVzZURpY3Rpb25hcnkuY2hpbmVzZUV4dGVuZEYgKyAnKSskJztcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrkuK3mlodcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0NoaW5lc2VcbiAqIEBzaW5jZSAxLjEuMFxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM4LyNCbG9ja0xpc3Rpbmd8NC40IExpc3Rpbmcgb2YgQ2hhcmFjdGVycyBDb3ZlcmVkIGJ5IHRoZSBVbmloYW4gRGF0YWJhc2V9XG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubG9vc2U9ZmFsc2VdIOWuveadvuaooeW8j+OAguWmguaenOS4unRydWXvvIzlj6ropoHljIXlkKvkuK3mlofljbPkuLp0cnVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li65Lit5paHXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzQ2hpbmVzZSgn5p6X5p+Q5p+QJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNDaGluZXNlKCfmnpdBJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIC8vIOWuveadvuaooeW8j++8jOWPquimgeWMheWQq+S4reaWh+WNs+S4unRydWVcbiAqIGlzQ2hpbmVzZSgn5p6XQScsIHtsb29zZTogdHJ1ZX0pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzQ2hpbmVzZSgnQeael0EnLCB7bG9vc2U6IHRydWV9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKi9cbmZ1bmN0aW9uIGlzQ2hpbmVzZSh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAobG9vc2UgPyBsb29zZUNoaW5lc2VSZWdFeHAgOiBjaGluZXNlUmVnRXhwLCBzdXBwb3J0UmVnRXhwVW5pY29kZSA/ICd1JyA6IHVuZGVmaW5lZCk7XG4gIHJldHVybiByZWcudGVzdCh2YWx1ZVN0cik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQ2hpbmVzZTtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyBpcHY05q2j5YiZXG5jb25zdCByZWcgPSAvXigoXFxkezEsMn18MVxcZFxcZHwyWzAtNF1cXGR8MjVbMC01XSlcXC4pezN9KFxcZHsxLDJ9fDFcXGRcXGR8MlswLTRdXFxkfDI1WzAtNV0pJC87XG5cbi8qKlxuICog5qOA5rWL5YC85piv5ZCm5Li6aXB2NFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzSVB2NFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOimgeajgOa1i+eahOWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4umlwdjRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNJUHY0KCcxOTIuMTY4LjEuMScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NCgnMjU1LjI1NS4yNTUuMjU1Jyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY0KCcyNTYuMjU2LjI1Ni4yNTYnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNJUHY0KCcwLjAnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICovXG5mdW5jdGlvbiBpc0lQdjQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0lQdjQ7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8gaXB2Nuato+WImVxuY29uc3QgcmVnID0gL14oKChbMC05QS1GXXsxLDR9Oil7N30oWzAtOUEtRl17MSw0fXw6KSl8KChbMC05QS1GXXsxLDR9Oil7Nn0oOlswLTlBLUZdezEsNH18KCgyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KShcXC4oMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkpezN9KXw6KSl8KChbMC05QS1GXXsxLDR9Oil7NX0oKCg6WzAtOUEtRl17MSw0fSl7MSwyfSl8OigoMjVbMC01XXwyWzAtNF1cXGR8MVxcZFxcZHxcXGR7MSwyfSkoXFwuKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKXszfSl8OikpfCgoWzAtOUEtRl17MSw0fTopezR9KCgoOlswLTlBLUZdezEsNH0pezEsM30pfCgoOlswLTlBLUZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7M30oKCg6WzAtOUEtRl17MSw0fSl7MSw0fSl8KCg6WzAtOUEtRl17MSw0fSl7MCwyfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7Mn0oKCg6WzAtOUEtRl17MSw0fSl7MSw1fSl8KCg6WzAtOUEtRl17MSw0fSl7MCwzfTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KChbMC05QS1GXXsxLDR9Oil7MX0oKCg6WzAtOUEtRl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSl8KDooKCg6WzAtOUEtRl17MSw0fSl7MSw3fSl8KCg6WzAtOUEtRl17MSw0fSl7MCw1fTooKDI1WzAtNV18MlswLTRdXFxkfDFcXGRcXGR8XFxkezEsMn0pKFxcLigyNVswLTVdfDJbMC00XVxcZHwxXFxkXFxkfFxcZHsxLDJ9KSl7M30pKXw6KSkpKCUuKyk/JC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4umlwdjZcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0lQdjZcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDlgLzmmK/lkKbkuLppcHY2XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIOWGkuWIhuWNgeWFrei/m+WItuihqOekuuazlVxuICogaXNJUHY2KCcyMDAxOjBEQjg6MDAwMDowMDIzOjAwMDg6MDgwMDoyMDBDOjQxN0EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyDliY3lr7ww55yB55WlXG4gKiBpc0lQdjYoJzIwMDE6REI4OjA6MjM6ODo4MDA6MjAwQzo0MTdBJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCdGRjAxOjA6MDowOjA6MDowOjExMDEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiAvLyAw5L2N5Y6L57yp6KGo56S65rOVXG4gKiBpc0lQdjYoJ0ZGMDE6OjExMDEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzo6MScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignOjonKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzA6MDowOjA6MDowOjA6MScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzSVB2NignMDowOjA6MDowOjA6MDowJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogLy8g5YaF5bWMSVB2NOWcsOWdgOihqOekuuazlVxuICogaXNJUHY2KCc6OjE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNJUHY2KCc6OkZGRkY6MTkyLjE2OC4xLjEnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc0lQdjYoJzE5Mi4xNjguMS4xJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqL1xuZnVuY3Rpb24gaXNJUHY2KHZhbHVlKSB7XG4gIGNvbnN0IHZhbHVlU3RyID0gY29udmVydFRvU3RyaW5nKHZhbHVlKTtcbiAgcmV0dXJuIHJlZy50ZXN0KHZhbHVlU3RyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNJUHY2O1xuIiwiaW1wb3J0IGNvbnZlcnRUb1N0cmluZyBmcm9tICcuL3V0aWxzL2NvbnZlcnRUb1N0cmluZyc7XG5cbi8vIHVybOato+WImVxuY29uc3QgcmVnID0gLygoKF5odHRwcz86KD86XFwvXFwvKT8pKD86Wy07OiY9XFwrXFwkLFxcd10rQCk/W0EtWmEtejAtOS4tXSsoPzo6XFxkKyk/fCg/Ond3dy58Wy07OiY9XFwrXFwkLFxcd10rQClbQS1aYS16MC05Li1dKykoKD86XFwvW1xcK34lXFwvLlxcdy1fXSopP1xcPz8oPzpbLVxcKz0mOyVALlxcd19dKikjPyg/OltcXHddKikpPykkLztcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLp1cmxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc1VybFxuICogQHNpbmNlIDMuNC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv57uf5LiA6LWE5rqQ5a6a5L2N56ymfOe7n+S4gOi1hOa6kOWumuS9jeespn1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5YC85piv5ZCm5Li6dXJsXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzVXJsKCcnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNVcmwoJzguOC44LjgnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNVcmwoJ2V4YW1wbGUuY29tJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNVcmwoJ2h0dHA6Ly9leGFtcGxlLmNvbScpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwczovL2V4YW1wbGUuY29tOjgwODAnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VybCgnaHR0cDovL3d3dy5leGFtcGxlLmNvbS90ZXN0LzEyMycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVXJsKCdodHRwOi8vd3d3LmV4YW1wbGUuY29tL3Rlc3QvMTIzP2Zvbz1iYXInKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaXNVcmwodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1VybDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDln7rnoYDop4TliJnvvIznlLExNOS9jeaVsOWtl+acrOS9k+eggeWSjDHkvY3mlbDlrZfmoKHpqoznoIHnu4TmiJDvvIzlhbbkuK3mnKzkvZPnoIHku47lt6boh7Plj7Pkvp3mrKHkuLrvvJo25L2N6aaW5qyh55m76K6w5py65YWz56CB44CBOOS9jemhuuW6j+eggeOAglxuY29uc3QgYmFzZVJlZyA9IC9eXFxkezE1fSQvO1xuXG4vKipcbiAqIOiuoeeul+agoemqjOeggVxuICpcbiAqIEBwcml2YXRlXG4gKiBAc2luY2UgMy41LjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVDb2RlIOiQpeS4muaJp+eFp+WJjTE05L2NXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDmoKHpqoznoIFcbiAqL1xuZnVuY3Rpb24gc3VtQ2hlY2tDb2RlKHByZUNvZGUpIHtcbiAgbGV0IHJldE51bTsgLy8g5qCh6aqM5L2N5pWw5a2XXG5cbiAgbGV0IHBqID0gMTA7IC8vIFBqKzEgMTHvvIzliJ3lp4vkuLoxMFxuXG4gIGZvciAobGV0IGogPSAwOyBqIDwgMTQ7IGorKykge1xuICAgIGNvbnN0IHNqID0gcGogKyBOdW1iZXIocHJlQ29kZVtqXSk7XG4gICAgbGV0IHNqMTAgPSBzaiAlIDEwO1xuICAgIHNqMTAgPSBzajEwID09PSAwID8gMTAgOiBzajEwO1xuICAgIGNvbnN0IHBqMSA9IHNqMTAgKiAyO1xuICAgIHBqID0gcGoxICUgMTE7XG4gIH1cblxuICAvLyDlj43mqKExMOiuoeeul1xuICBpZiAocGogPT09IDEwIHx8IHBqID09PSAxKSB7XG4gICAgcmV0TnVtID0gMTtcbiAgfSBlbHNlIHtcbiAgICByZXROdW0gPSAxMSAtIHBqO1xuICB9XG5cbiAgcmV0dXJuIHJldE51bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrokKXkuJrmiafnhaflj7fvvIzkuZ/lj6vlt6XllYbms6jlhozlj7fjgILnlLExNOS9jeaVsOWtl+acrOS9k+eggeWSjDHkvY3mlbDlrZfmoKHpqoznoIHnu4TmiJDvvIzlhbbkuK3mnKzkvZPnoIHku47lt6boh7Plj7Pkvp3mrKHkuLrvvJo25L2N6aaW5qyh55m76K6w5py65YWz56CB44CBOOS9jemhuuW6j+eggeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzQnVzaW5lc3NMaWNlbnNlXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly93ZW5rdS5iYWlkdS5jb20vdmlldy8xOTg3MzcwNGNjMTc1NTI3MDcyMjA4N2MuaHRtbHxHUzE14oCUMjAwNiDlt6XllYbooYzmlL/nrqHnkIbluILlnLrkuLvkvZPms6jlhozlj7fnvJbliLbop4TliJl9XG4gKiBAc2luY2UgMy41LjBcbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sb29zZT1mYWxzZV0g5a695p2+5qih5byP44CC5aaC5p6c5Li6dHJ1Ze+8jOS4jeagoemqjOagoemqjOS9jeOAglxuICogQHJldHVybnMge2Jvb2xlYW59IOWAvOaYr+WQpuS4uuiQpeS4muaJp+eFp+WPt1xuICogQGV4YW1wbGVcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOTg1NTMzJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDknKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogaXNCdXNpbmVzc0xpY2Vuc2UoJzMxMDExNTYwMDknLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBpc0J1c2luZXNzTGljZW5zZSgnMzEwMTE1NjAwOTg1NTM1Jyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIGlzQnVzaW5lc3NMaWNlbnNlKCczMTAxMTU2MDA5ODU1MzUnLCB7IGxvb3NlOiB0cnVlIH0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc0J1c2luZXNzTGljZW5zZSh2YWx1ZSwgeyBsb29zZSA9IGZhbHNlIH0gPSB7fSkge1xuICBjb25zdCB2YWx1ZVN0ciA9IGNvbnZlcnRUb1N0cmluZyh2YWx1ZSk7XG5cbiAgY29uc3QgcGFzc0Jhc2VSdWxlID0gYmFzZVJlZy50ZXN0KHZhbHVlU3RyKTtcblxuICAvLyDlrr3mnb7mqKHlvI8g5oiWIOWfuuehgOinhOWImeS4jemAmui/h+ebtOaOpei/lOWbnlxuICBpZiAobG9vc2UgfHwgIXBhc3NCYXNlUnVsZSkge1xuICAgIHJldHVybiBwYXNzQmFzZVJ1bGU7XG4gIH1cblxuICAvLyDliY0xNOS9jVxuICBjb25zdCBwcmVDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKDAsIDE0KTtcbiAgLy8g5qCh6aqM56CBXG4gIGNvbnN0IGxhc3RDb2RlID0gdmFsdWVTdHIuc3Vic3RyaW5nKHZhbHVlU3RyLmxlbmd0aCAtIDEpO1xuICAvLyDorqHnrpfmoKHpqoznoIFcbiAgY29uc3QgY2hlY2tDb2RlID0gc3VtQ2hlY2tDb2RlKHByZUNvZGUpO1xuXG4gIHJldHVybiBsYXN0Q29kZSA9PT0gU3RyaW5nKGNoZWNrQ29kZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQnVzaW5lc3NMaWNlbnNlO1xuIiwiLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbnsbvkvLxQcm9taXNl5a+56LGhXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpWYWxpZGF0b3IuaXNQcm9taXNlTGlrZVxuICogQHNpbmNlIDMuOC4wXG4gKiBAcGFyYW0geyp9IG9iaiDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbnsbvkvLxQcm9taXNl5a+56LGhXG4gKiBAZXhhbXBsZVxuICpcbiAqIGlzUHJvbWlzZUxpa2UoW10pO1xuICogPT4gZmFsc2VcbiAqXG4gKiBpc1Byb21pc2VMaWtlKHt0aGVuOigpPT57fX0pO1xuICogPT4gdHJ1ZVxuICpcbiAqIGlzUHJvbWlzZUxpa2UoUHJvbWlzZS5yZXNvbHZlKCkpO1xuICogPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1Byb21pc2VMaWtlKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBudWxsICYmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvbWlzZUxpa2U7XG4iLCJpbXBvcnQgY29udmVydFRvU3RyaW5nIGZyb20gJy4vdXRpbHMvY29udmVydFRvU3RyaW5nJztcblxuLy8g5riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+B5q2j5YiZXG5jb25zdCByZWdITUNhcmQgPSAvXltobV17MX0oWzAtOV17MTB9fFswLTldezh9KSQvaTtcblxuLyoqXG4gKiDmo4DmtYvlgLzmmK/lkKbkuLrmuK/mvrPlsYXmsJHmnaXlvoDlhoXlnLDpgJrooYzor4HvvIzkv5fnp7Dlm57kuaHor4HmiJblm57kuaHljaHjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlZhbGlkYXRvci5pc0hNQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly96aC53aWtpcGVkaWEub3JnL3dpa2kv5riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BfOa4r+a+s+WxheawkeadpeW+gOWGheWcsOmAmuihjOivgX1cbiAqIEBwYXJhbSB7Kn0gdmFsdWUg6KaB5qOA5rWL55qE5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g5piv5ZCm5Li65riv5r6z5bGF5rCR5p2l5b6A5YaF5Zyw6YCa6KGM6K+BXG4gKiBAZXhhbXBsZVxuICogLy8g56ys5LiA5LujIDExIOS9jVxuICogaXNITUNhcmQoJ2gzMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ0gzMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ20zMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ00zMjAzMTE3NzA3JykgLy8gdHJ1ZVxuICpcbiAqIC8vIOesrOS6jOS7oyA5IOS9jVxuICogaXNITUNhcmQoJ2gzMjAzMTE3NycpIC8vIHRydWVcbiAqIGlzSE1DYXJkKCdIMzIwMzExNzcnKSAvLyB0cnVlXG4gKiBpc0hNQ2FyZCgnbTMyMDMxMTc3JykgLy8gdHJ1ZVxuICogaXNITUNhcmQoJ00zMjAzMTE3NycpIC8vIHRydWVcbiAqL1xuZnVuY3Rpb24gaXNITUNhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnSE1DYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0hNQ2FyZDtcbiIsImltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vLyDlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4HmraPliJnvvIzmlK/mjIHkuIDmrKHmgKfnn63mnJ/lj7Dog57or4FcbmNvbnN0IHJlZ1RXQ2FyZCA9IC9eKFxcZHs4fXxbXFxkYS16XXsxMH0pJC9pO1xuXG4vKipcbiAqIOajgOa1i+WAvOaYr+WQpuS4uuWPsOa5vuWxheawkeadpeW+gOWkp+mZhumAmuihjOivge+8jOS/l+ensOWPsOiDnuivgeOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6VmFsaWRhdG9yLmlzVFdDYXJkXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/lj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4F85Y+w5rm+5bGF5rCR5p2l5b6A5aSn6ZmG6YCa6KGM6K+BfVxuICogQHBhcmFtIHsqfSB2YWx1ZSDopoHmo4DmtYvnmoTlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLrlj7Dmub7lsYXmsJHmnaXlvoDlpKfpmYbpgJrooYzor4FcbiAqIEBleGFtcGxlXG4gKiBpc1RXQ2FyZCgnMTIzNDU2NzgnKSAvLyB0cnVlXG4gKiBpc1RXQ2FyZCgnMDcyNTc0NTYnKSAvLyB0cnVlXG4gKlxuICogLy8g5LiA5qyh5oCn55+t5pyfXG4gKiBpc1RXQ2FyZCgnRjI5MDI5OTk3NycpIC8vIHRydWVcbiAqL1xuZnVuY3Rpb24gaXNUV0NhcmQodmFsdWUpIHtcbiAgY29uc3QgdmFsdWVTdHIgPSBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xuICByZXR1cm4gcmVnVFdDYXJkLnRlc3QodmFsdWVTdHIpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1RXQ2FyZDtcbiIsIi8vIOacgOWkp+WuieWFqOaVsOWtl1xuZXhwb3J0IGNvbnN0IE1BWF9TQUZFX0lOVEVHRVIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCA5MDA3MTk5MjU0NzQwOTkxO1xuLy8g5pyA5bCP5a6J5YWo5pWw5a2XXG5leHBvcnQgY29uc3QgTUlOX1NBRkVfSU5URUdFUiA9IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSIHx8IC05MDA3MTk5MjU0NzQwOTkxO1xuIiwiLyoqXG4gKiDlj4LogIM6IGh0dHBzOi8vZ2l0aHViLmNvbS9uZWZlL251bWJlci1wcmVjaXNpb24vYmxvYi9tYXN0ZXIvc3JjL2luZGV4LnRzXG4gKlxuICog6Kej5Yaz5rWu5Yqo6L+Q566X6Zeu6aKY77yM6YG/5YWN5bCP5pWw54K55ZCO5Lqn55Sf5aSa5L2N5pWw5ZKM6K6h566X57K+5bqm5o2f5aSx44CCXG4gKiDpl67popjnpLrkvovvvJoyLjMgKyAyLjQgPSA0LjY5OTk5OTk5OTk5OTk5Oe+8jDEuMCAtIDAuOSA9IDAuMDk5OTk5OTk5OTk5OTk5OThcbiAqL1xuXG5pbXBvcnQgeyBNQVhfU0FGRV9JTlRFR0VSLCBNSU5fU0FGRV9JTlRFR0VSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIOaYr+WQpuS4uuenkeWtpuiuoeaVsOazleaVsOWtl1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBudW0g5qOA5p+l5YC8XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2NpZW50aWZpY051bWJlcihudW0pIHtcbiAgcmV0dXJuIC9cXGQrXFwuP1xcZCplW1xcK1xcLV0qXFxkKy9pLnRlc3QobnVtKTtcbn1cblxuLyoqXG4gKiDmiorplJnor6/nmoTmlbDmja7ovazmraNcbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOi+k+WFpeaVsFxuICogQHBhcmFtIHtudW1iZXJ9IFtwcmVjaXNpb249MTJdIOWwj+aVsOeCueeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn1cbiAqIEBleGFtcGxlXG4gKlxuICogIHN0cmlwKDAuMDk5OTk5OTk5OTk5OTk5OTgpPTAuMVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaXAobnVtLCBwcmVjaXNpb24gPSAxMikge1xuICByZXR1cm4gK3BhcnNlRmxvYXQobnVtLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xufVxuXG4vKipcbiAqIOiuoeeul+aVsOWtl+eahOWwj+aVsOeCuemVv+W6pu+8jOaUr+aMgeenkeWtpuiusOaVsOazlVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbnVtIOi+k+WFpeaVsFxuICogQHJldHVybnMge251bWJlcn0g5bCP5pWw54K56ZW/5bqmXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWdpdExlbmd0aChudW0pIHtcbiAgLy8gR2V0IGRpZ2l0IGxlbmd0aCBvZiBlXG4gIGNvbnN0IGVTcGxpdCA9IG51bS50b1N0cmluZygpLnNwbGl0KC9lL2kpO1xuICBjb25zdCBsZW4gPSAoZVNwbGl0WzBdLnNwbGl0KCcuJylbMV0gfHwgJycpLmxlbmd0aCAtICsoZVNwbGl0WzFdIHx8IDApO1xuICByZXR1cm4gbGVuID4gMCA/IGxlbiA6IDA7XG59XG5cbi8qKlxuICog5oqK5bCP5pWw6L2s5oiQ5pW05pWw77yM5pSv5oyB56eR5a2m6K6h5pWw5rOV44CC5aaC5p6c5piv5bCP5pWw5YiZ5pS+5aSn5oiQ5pW05pWwXG4gKlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvYXQyRml4ZWQobnVtKSB7XG4gIGlmICghaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIHJldHVybiBOdW1iZXIobnVtLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcnKSk7XG4gIH1cbiAgY29uc3QgZExlbiA9IGRpZ2l0TGVuZ3RoKG51bSk7XG4gIHJldHVybiBkTGVuID4gMCA/IHN0cmlwKCtudW0gKiBNYXRoLnBvdygxMCwgZExlbikpIDogK251bTtcbn1cblxuLyoqXG4gKiDmo4DmtYvmlbDlrZfmmK/lkKbotornlYzvvIzlpoLmnpzotornlYznu5nlh7rmj5DnpLpcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6L6T5YWl5pWwXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tCb3VuZGFyeShudW0pIHtcbiAgaWYgKCtudW0gPiBNQVhfU0FGRV9JTlRFR0VSIHx8ICtudW0gPCBNSU5fU0FGRV9JTlRFR0VSKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGlzIGJleW9uZCBib3VuZGFyeSB3aGVuIHRyYW5zZmVyIHRvIGludGVnZXIsIHRoZSByZXN1bHRzIG1heSBub3QgYmUgYWNjdXJhdGVgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiDljrvmjonlt6bovrnmlbDlrZcwXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG51bSDmlbDlrZflrZfnrKbkuLJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGVmdFplcm8obnVtKSB7XG4gIGNvbnN0IHJlZyA9IC9eKFsrLV0pPygwKykoWzAtOVxcLl0rKSQvO1xuICBjb25zdCByZXN1bHQgPSByZWcuZXhlYyhudW0pO1xuXG4gIGxldCBzaWduO1xuXG4gIGlmIChyZXN1bHQpIHtcbiAgICBzaWduID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHJldHVybiBzaWduICsgKHJlc3VsdFszXVswXSA9PT0gJy4nID8gJzAnICsgcmVzdWx0WzNdIDogcmVzdWx0WzNdKTtcbiAgfVxuXG4gIHJldHVybiBudW07XG59XG5cbi8qKlxuICog56eR5a2m6K6h5pWw5rOV6L2s5o2i5oiQ5pmu6YCa5pWw5a2XXG4gKlxuICogSmF2YVNjcmlwdOWcqOS7peS4i+aDheaZr+S8muiHquWKqOWwhuaVsOWAvOi9rOaNouS4uuenkeWtpuiuoeaVsOazle+8mlxuICogIDEu5bCP5pWw54K55YmN55qE5pWw5a2X5Liq5pWw5aSn5LqO562J5LqOMjLkvY1cbiAqICAyLuWwj+aVsOeCueWJjei+ueaYrzDvvIzlsI/mlbDngrnlkI7ljYHliIbkvY3vvIjljIXlkKvljYHliIbkvY3vvInkuYvlkI7ov57nu63pm7bnmoTkuKrmlbDlpKfkuo7nrYnkuo425LiqXG4gKlxuICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXJ9IG51bSDnp5HlraborqHmlbDms5XmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOaNouWQjueahOaVsOWtl+Wtl+espuS4slxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkge1xuICBpZiAoaXNTY2llbnRpZmljTnVtYmVyKG51bS50b1N0cmluZygpKSkge1xuICAgIGNvbnN0IHplcm8gPSAnMCc7XG4gICAgY29uc3QgcGFydHMgPSBTdHJpbmcobnVtKS50b0xvd2VyQ2FzZSgpLnNwbGl0KCdlJyk7XG4gICAgY29uc3QgZSA9IHBhcnRzLnBvcCgpOyAvLyDlrZjlgqjmjIfmlbBcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgbCA9IE1hdGguYWJzKGUpOyAvLyDlj5bnu53lr7nlgLzvvIxsLTHlsLHmmK8w55qE5Liq5pWwXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHNpZ24gPSBlIC8gbDsgLy/liKTmlq3mraPotJ9cbiAgICBjb25zdCBjb2VmZl9hcnJheSA9IHBhcnRzWzBdLnNwbGl0KCcuJyk7IC8vIOWwhuezu+aVsOaMieeFp+Wwj+aVsOeCueaLhuWIhlxuXG4gICAgLy/lpoLmnpzmmK/lsI/mlbBcbiAgICBpZiAoc2lnbiA9PT0gLTEpIHtcbiAgICAgIC8v5ou85o6l5a2X56ym5Liy77yM5aaC5p6c5piv5bCP5pWw77yM5ou85o6lMOWSjOWwj+aVsOeCuVxuICAgICAgbnVtID0gemVybyArICcuJyArIG5ldyBBcnJheShsKS5qb2luKHplcm8pICsgY29lZmZfYXJyYXkuam9pbignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlYyA9IGNvZWZmX2FycmF5WzFdO1xuXG4gICAgICAvL+WmguaenOaYr+aVtOaVsO+8jOWwhuaVtOaVsOmZpOesrOS4gOS9jeS5i+WklueahOmdnumbtuaVsOWtl+iuoeWFpeS9jeaVsO+8jOebuOW6lOeahOWHj+WwkTDnmoTkuKrmlbBcbiAgICAgIGlmIChsIC0gZGVjLmxlbmd0aCA8IDApIHtcbiAgICAgICAgbnVtID0gdHJpbUxlZnRaZXJvKGNvZWZmX2FycmF5WzBdICsgZGVjLnN1YnN0cmluZygwLCBsKSkgKyAnLicgKyBkZWMuc3Vic3RyaW5nKGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy/mi7zmjqXlrZfnrKbkuLLvvIzlpoLmnpzmmK/mlbTmlbDvvIzkuI3pnIDopoHmi7zmjqXlsI/mlbDngrlcbiAgICAgICAgbnVtID0gY29lZmZfYXJyYXkuam9pbignJykgKyBuZXcgQXJyYXkobCAtIGRlYy5sZW5ndGggKyAxKS5qb2luKHplcm8pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBudW07XG59XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOYU5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOYU5cbiAqIEBleGFtcGxlXG4gKlxuICogaXNOYU4oTmFOKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTmFOKDEpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBfaXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIGlzVHlwZSh2YWx1ZSwgJ051bWJlcicpICYmIGlzTmFOKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgX2lzTmFOO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSwgc2NpZW50aWZpY1RvTnVtYmVyLCBpc1NjaWVudGlmaWNOdW1iZXIgfSBmcm9tICcuL3V0aWxzL21hdGgudXRpbCc7XG5pbXBvcnQgaXNOYU4gZnJvbSAnLi91dGlscy90eXBlL2lzTmFOJztcbmltcG9ydCB7IHRyaW1MZWZ0WmVybyB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuY29uc3QgcmVnID0gL15bKy1dP1xcZCpcXC4/XFxkKiQvO1xuXG4vKipcbiAqIOajgOafpeaVsOWtl+aIluaVsOWtl+Wtl+espuS4slxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbnVtXG4gKiBAcmV0dXJucyDmmK/lkKbkuLrmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY2hlY2tOdW1iZXIobnVtKSB7XG4gIGlmICghKHJlZy50ZXN0KG51bSkgfHwgaXNTY2llbnRpZmljTnVtYmVyKG51bSkpIHx8IGlzTmFOKG51bSkgfHwgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmIHR5cGVvZiBudW0gIT09ICdzdHJpbmcnKSB8fCBudW0gPT09ICcnKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHtudW19IGludmFsaWQgcGFyYW1ldGVyLmApO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIOaVsOWtl+i2hemZkOWmguaenOS4jeaYr+aYr+Wtl+espuS4su+8jOWPr+iDveacieW8guW4uFxuICAvLyDlpoIgMTExMTExMTExMTExMTExMTExMTExMSAvLyA9PiAxLjExMTExMTExMTExMTExMTFlKzIxXG4gIGlmICh0eXBlb2YgbnVtID09PSAnbnVtYmVyJykge1xuICAgIGNoZWNrQm91bmRhcnkobnVtKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIOagvOW8j+WMluaVtOaVsOmDqOWIhlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gaW50U3RyIOaVsOWtl+Wtl+espuS4slxuICogQHBhcmFtIHtzdHJpbmd9IHRob3VzYW5kIOWNg+WIhuS9jeespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEludChpbnRTdHIsIHRob3VzYW5kKSB7XG4gIGxldCB0eHQgPSAnJztcbiAgaW50U3RyID0gdHJpbUxlZnRaZXJvKGludFN0cik7XG4gIGludFN0ciA9IGludFN0clswXSA9PT0gJysnID8gaW50U3RyLnN1YnN0cmluZygxKSA6IGludFN0cjsgLy8g5Y675o6JK+espuWPt1xuICBjb25zdCBuZWdhdGl2ZVN5bWJvbCA9IE51bWJlcihpbnRTdHIpIDwgMCA/ICctJyA6ICcnO1xuICBjb25zdCByZUFyciA9IG5lZ2F0aXZlU3ltYm9sID8gaW50U3RyLnN1YnN0cmluZygxKS5zcGxpdCgnJykucmV2ZXJzZSgpIDogaW50U3RyLnNwbGl0KCcnKS5yZXZlcnNlKCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByZUFyci5sZW5ndGg7IGkrKykge1xuICAgIHR4dCArPSByZUFycltpXSArICgoaSArIDEpICUgMyA9PT0gMCAmJiBpICsgMSAhPT0gcmVBcnIubGVuZ3RoID8gdGhvdXNhbmQgOiAnJyk7XG4gIH1cblxuICByZXR1cm4gbmVnYXRpdmVTeW1ib2wgKyB0eHQuc3BsaXQoJycpLnJldmVyc2UoKS5qb2luKCcnKTtcbn1cblxuLyoqXG4gKiDmoLzlvI/ljJblsI/mlbDpg6jliIbvvIzlpoLmnpzkvb/nlKggdG9GaXhlZO+8jOi2heWkp+mineaVsOWtl+S8muiHquWKqOiiq+aIquaWrVxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVjU3RyIOWwj+aVsOeCuemDqOWIhueahOWtl+espuS4slxuICogQHBhcmFtIHtudW1iZXJ9IHByZWNpc2lvbiDkv53nlZnkvY3mlbBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWNpbWFsIOWwj+aVsOeCueespuWPt1xuICogQHJldHVybnMg5qC85byP5YyW5ZCO55qE5YC8XG4gKi9cbmZ1bmN0aW9uIGZvcm1hdERlYyhkZWNTdHIsIHByZWNpc2lvbiwgZGVjaW1hbCkge1xuICBpZiAocHJlY2lzaW9uID09PSAwKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgY29uc3QgemVybyA9IDA7XG4gIGxldCByZXQgPSAnJztcblxuICBpZiAoZGVjU3RyICYmIE51bWJlcihkZWNTdHIpID4gMCkge1xuICAgIGxldCB0bXBOdW0gPSBwYXJzZUZsb2F0KCcwLicgKyBkZWNTdHIpO1xuICAgIHJldCA9IHRtcE51bS50b0ZpeGVkKHByZWNpc2lvbikuc3Vic3RyaW5nKDIpO1xuICB9IGVsc2Uge1xuICAgIHJldCA9IHplcm8udG9GaXhlZChwcmVjaXNpb24pLnN1YnN0cmluZygyKTtcbiAgfVxuXG4gIHJldHVybiBkZWNpbWFsICsgcmV0O1xufVxuXG4vKipcbiAqIOagvOW8j+WMlumHkeminVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vbmV5XG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBudW0g6ZyA6L2s5o2i6YeR6aKdICjmnIDlpKfvvJo5MDA3MTk5MjU0NzQwOTkxIOacgOWwj++8miAtOTAwNzE5OTI1NDc0MDk5MSlcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10gLSDph5Hpop3moLzlvI/ljJbphY3nva5cbiAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyfSBbb3B0aW9ucy5wcmVjaXNpb249Ml0gLSDkv53nlZnkvY3mlbAg77yI5pyA6auY77yaMTDkvY3vvIlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5zeW1ib2xdIC0g6LSn5biB56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudGhvdXNhbmQ9XCIsXCJdIC0g5Y2D5YiG5L2N56ym5Y+3XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIi5cIl0gLSDlsI/mlbDkvY3nrKblj7dcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMlueahOmHkeminVxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmlbTmlbBcbiAqIGZvcm1hdE1vbmV5KCcxMDAwJyk7XG4gKiAvLyA9PiAxLDAwMC4wMFxuICpcbiAqIC8vIOWwj+aVsO+8iOm7mOiupOS/neeVmTLkvY3lsI/mlbDvvIlcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzJyk7XG4gKiAvLyA9PiAzLDAwMC4wM1xuICpcbiAqIC8vIOS/neeVmTTkvY3lsI/mlbBcbiAqIGZvcm1hdE1vbmV5KCczMDAwLjAzMDAnLCB7IHByZWNpc2lvbjogNCB9KTtcbiAqIC8vID0+IDMsMDAwLjAzMDBcbiAqXG4gKiAvLyDkv53nlZkxMOS9jeWwj+aVsFxuICogZm9ybWF0TW9uZXkoJzE1MDAuMicsIHsgcHJlY2lzaW9uOiAxMCB9KTtcbiAqIC8vID0+IDEsNTAwLjIwMDAwMDAwMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljZXkvY3nrKblj7dcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgc3ltYm9sOiAnJCcgfSk7XG4gKiAvLyA9PiAkMSwwMDAuMDBcbiAqXG4gKiAvLyDoh6rlrprkuYnljYPkvY3liIblibLnrKbvvIjpu5jorqQnLCfvvIlcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgdGhvdXNhbmQ6ICd8JyB9KTtcbiAqIC8vID0+IDF8MDAwLjAwXG4gKlxuICogLy8g6Ieq5a6a5LmJ5bCP5pWw5L2N5YiG5Ymy56ymKOm7mOiupCcuJylcbiAqIGZvcm1hdE1vbmV5KDEwMDAuMDAsIHsgZGVjaW1hbDogJyYnIH0pO1xuICogLy8gPT4gMSwwMDAmMDBcbiAqL1xuY29uc3QgZm9ybWF0TW9uZXkgPSAobnVtLCB7IHByZWNpc2lvbiA9IDIsIHN5bWJvbCwgdGhvdXNhbmQgPSAnLCcsIGRlY2ltYWwgPSAnLicgfSA9IHt9KSA9PiB7XG4gIC8vIOaVsOWtl+WPguaVsOS4jeato+ehru+8jOi/lOWbnuepuuWtl+espuS4slxuICAvLyBAdHMtaWdub3JlXG4gIGlmICghY2hlY2tOdW1iZXIobnVtKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOWPguaVsOinhOaVtOWMllxuICBpZiAodHlwZW9mIHByZWNpc2lvbiAhPT0gJ251bWJlcicgfHwgaXNOYU4ocHJlY2lzaW9uKSB8fCBwcmVjaXNpb24gPCAwKSB7XG4gICAgcHJlY2lzaW9uID0gMjtcbiAgfSBlbHNlIGlmIChwcmVjaXNpb24gPiAxMCkge1xuICAgIHByZWNpc2lvbiA9IDEwO1xuICB9XG4gIHN5bWJvbCA9IHR5cGVvZiBzeW1ib2wgPT09ICdzdHJpbmcnID8gc3ltYm9sIDogJyc7XG4gIHRob3VzYW5kID0gdHlwZW9mIHRob3VzYW5kID09PSAnc3RyaW5nJyA/IHRob3VzYW5kIDogJywnO1xuICBkZWNpbWFsID0gdHlwZW9mIGRlY2ltYWwgPT09ICdzdHJpbmcnID8gZGVjaW1hbCA6ICcuJztcblxuICAvLyDovazmjaLmlbDlrZflrZfnrKbkuLLvvIzmlK/mjIHnp5HlraborrDmlbDms5VcbiAgY29uc3QgbnVtU3RyID0gc2NpZW50aWZpY1RvTnVtYmVyKG51bSkgKyAnJztcbiAgLy8g5pW05pWw5ZKM5bCP5pWw6YOo5YiGXG4gIGNvbnN0IFtpbnRTdHIsIGRlY1N0cl0gPSBudW1TdHIuc3BsaXQoJy4nKTtcblxuICByZXR1cm4gc3ltYm9sICsgZm9ybWF0SW50KGludFN0ciwgdGhvdXNhbmQpICsgZm9ybWF0RGVjKGRlY1N0ciwgcHJlY2lzaW9uLCBkZWNpbWFsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZvcm1hdE1vbmV5O1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpVbmRlZmluZWRcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNVbmRlZmluZWRcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpVbmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogaXNVbmRlZmluZWQodW5kZWZpbmVkKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzVW5kZWZpbmVkKHZvaWQgMClcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc1VuZGVmaW5lZChudWxsKVxuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2b2lkIDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwiLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdWxsXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpUeXBlLmlzTnVsbFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOajgOafpeWAvFxuICogQHJldHVybnMge2Jvb2xlYW59IOaYr+WQpuS4uk51bGxcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdWxsKG51bGwpXG4gKiAvLyA9PiB0cnVlXG4gKlxuICogaXNOdWxsKHZvaWQgMClcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTnVsbCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVsbDtcbiIsImltcG9ydCBpc1VuZGVmaW5lZCBmcm9tICcuL2lzVW5kZWZpbmVkJztcbmltcG9ydCBpc051bGwgZnJvbSAnLi9pc051bGwnO1xuXG4vKipcbiAqIOajgOafpeWAvOaYr+WQpuS4uiB1bmRlZmluZWQg5oiWIG51bGxcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOYU5cbiAqIEBzaW5jZSA0LjMuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLogdW5kZWZpbmVkIOaIliBudWxsXG4gKi9cbmZ1bmN0aW9uIGlzTmlsKHZhbHVlKSB7XG4gIHJldHVybiBpc1VuZGVmaW5lZCh2YWx1ZSkgfHwgaXNOdWxsKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNOaWw7XG4iLCJpbXBvcnQgaXNOaWwgZnJvbSAnLi91dGlscy90eXBlL2lzTmlsJztcbmltcG9ydCBjb252ZXJ0VG9TdHJpbmcgZnJvbSAnLi91dGlscy9jb252ZXJ0VG9TdHJpbmcnO1xuXG4vKipcbiAqIOinhOaVtOWMluWtl+espuS4suOAguWmguaenOWAvOS4uiB1bmRlZmluZWQg5oiWIG51bGwg5bCG6L2s5Li656m65a2X56ym5Liy77yM5aaC5p6c5YC85LiN5piv5a2X56ym5Liy57G75Z6L5bCG6L2s5Li65a2X56ym5Liy44CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3Iubm9ybWFsaXplU3RyaW5nXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nI3N0cmluZ19pbnN0YW5jZXN8U3RyaW5nfVxuICogQHNpbmNlIDQuMy4wXG4gKiBAcGFyYW0geyp9IHZhbHVlIOW+heWkhOeQhueahOWAvFxuICogQHJldHVybnMge3N0cmluZ30g6KeE5pW05YyW55qE5YC8XG4gKiBAZXhhbXBsZVxuICogbm9ybWFsaXplU3RyaW5nKCk7IC8vICcnXG4gKiBub3JtYWxpemVTdHJpbmcodW5kZWZpbmVkKTsgLy8gJydcbiAqIG5vcm1hbGl6ZVN0cmluZyh2b2lkIDApOyAvLyAnJ1xuICogbm9ybWFsaXplU3RyaW5nKG51bGwpOyAvLyAnJ1xuICpcbiAqIG5vcm1hbGl6ZVN0cmluZyh0cnVlKTsgLy8gJ3RydWUnXG4gKiBub3JtYWxpemVTdHJpbmcoTmFOKTsgLy8gJ05hTidcbiAqIG5vcm1hbGl6ZVN0cmluZygxKTsgLy8gJzEnXG4gKiBub3JtYWxpemVTdHJpbmcoJ2EnKTsgLy8gJ2EnXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0cmluZyh2YWx1ZSkge1xuICBpZiAoaXNOaWwodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBjb252ZXJ0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVTdHJpbmc7XG4iLCJpbXBvcnQgbm9ybWFsaXplU3RyaW5nIGZyb20gJy4vbm9ybWFsaXplU3RyaW5nJztcblxuLyoqXG4gKiDmoLzlvI/ljJbpk7booYzljaHlj7dcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5mb3JtYXRCYW5rQ2FyZFxuICogQHNpbmNlIDEuMS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFua0NhcmRObyDopoHlpITnkIbnmoTlrZfnrKbkuLJcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9uc10g6YWN572u6aG5XG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIiBcIl0g6Ze06ZqU5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubGVuZ3RoPTRdIOmXtOmalOmVv+W6plxuICogQHJldHVybnMge3N0cmluZ30g5qC85byP5YyW55qE6ZO26KGM5Y2h5Y+3XG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIDE55L2N6ZO26KGM5Y2hXG4gKiBmb3JtYXRCYW5rQ2FyZCgnNjIyODQ4MDQwMjU2NDg5MDAxOCcpO1xuICogLy8gPT4gNjIyOCA0ODA0IDAyNTYgNDg5MCAwMThcbiAqXG4gKiAvLyAxNuS9jemTtuihjOWNoVxuICogZm9ybWF0QmFua0NhcmQoJzYyMjg0ODA0MDI1NjQ4OTAnKTtcbiAqIC8vID0+IDYyMjggNDgwNCAwMjU2IDQ4OTBcbiAqXG4gKiAvLyDohLHmlY/pk7booYzljaFcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4KioqKioqKio4OTAnKTtcbiAqIC8vID0+IDYyMjggKioqKiAqKioqIDg5MFxuICpcbiAqIC8vIDE25L2N6ZO26KGM5Y2h77yMXCItXCLpl7TpmpRcbiAqIGZvcm1hdEJhbmtDYXJkKCc2MjI4NDgwNDAyNTY0ODkwJywge2NoYXI6ICctJ30pO1xuICogLy8gPT4gNjIyOC00ODA0LTAyNTYtNDg5MFxuICpcbiAqL1xuZnVuY3Rpb24gZm9ybWF0QmFua0NhcmQoYmFua0NhcmRObyA9ICcnLCB7IGNoYXIgPSAnICcsIGxlbmd0aCA9IDQgfSA9IHt9KSB7XG4gIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYCgueyR7bGVuZ3RofX0pYCwgJ2cnKTtcbiAgY29uc3QgcmVnQ2hhciA9IG5ldyBSZWdFeHAoYCR7Y2hhcn1gLCAnZycpO1xuXG4gIGNvbnN0IHJlYWxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhiYW5rQ2FyZE5vKS5yZXBsYWNlKHJlZ0NoYXIsICcnKTtcbiAgY29uc3Qgc3RyID0gcmVhbFZhbHVlLnJlcGxhY2UocmVnLCBgJDEke2NoYXJ9YCk7XG5cbiAgcmV0dXJuIHJlYWxWYWx1ZS5sZW5ndGggJSBsZW5ndGggPT09IDAgPyBzdHIuc3Vic3RyaW5nKDAsIHN0ci5sZW5ndGggLSAxKSA6IHN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0QmFua0NhcmQ7XG4iLCIvKipcbiAqIOabv+aNouWtl+espu+8jOW6lOeUqOWcuuaZr+Wmgu+8muiEseaVj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnJlcGxhY2VDaGFyXG4gKiBAc2luY2UgMS4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHIg6KaB5aSE55CG55qE5a2X56ym5LiyXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLnN0YXJ0PTNdIOW8gOWni+S9jee9rlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVuZD0tNF0g57uT5p2f5L2N572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuY2hhcj1cIipcIl0g5pu/5o2i5a2X56ymXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMucmVwZWF0XSDmm7/mjaLlrZfnrKbnmoTph43lpI3mrKHmlbDvvIzpu5jorqTkuLrmm7/mjaLlhoXlrrnplb/luqbvvIzlj6/orr7nva7kuLrlm7rlrprlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy5leGNsdWRlXSDmjpLpmaTlrZfnrKbvvIzlpoLmnpzmjIflrprmjpLpmaTpobnvvIxyZXBlYXTorr7nva7ml6DmlYhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOWkhOeQhuWQjueahOWtl+esplxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyDmiYvmnLrlj7dcbiAqIHJlcGxhY2VDaGFyKCcxMzAwMDAwMDAwMCcpO1xuICogLy8gPT4gMTMwKioqKjAwMDBcbiAqXG4gKiAvLyDouqvku73or4FcbiAqIHJlcGxhY2VDaGFyKCcxMzA3MDExOTkzMTAzMDIyODgnKTtcbiAqIC8vID0+IDEzMCoqKioqKioqKioqMjI4OFxuICpcbiAqIC8vIOmCrueusVxuICogY29uc3QgZW1haWwgPSAnMTIzNDVAcXEuY29tJ1xuICogcmVwbGFjZUNoYXIoZW1haWwsIHtzdGFydDogMiwgZW5kOiBlbWFpbC5pbmRleE9mKCdAJyksIHJlcGVhdDogNH0pO1xuICogLy8gPT4gMTIqKioqQHFxLmNvbVxuICpcbiAqIC8vIOmTtuihjOWNoeWPt1xuICogcmVwbGFjZUNoYXIoJzYyMjg0ODA0MDI1NjQ4OTAwMTgnLCB7c3RhcnQ6IDAsIGVuZDogLTQsIHJlcGVhdDogNH0pO1xuICogLy8gPT4gKioqKjAwMThcbiAqXG4gKiAvLyDluKbmoLzlvI/nmoTpk7booYzljaHlj7dcbiAqIHJlcGxhY2VDaGFyKCc2MjI4IDQ4MDQgMDI1NiA0ODkwIDAxOCcsIHtzdGFydDogNCwgZW5kOiAtNCwgZXhjbHVkZTogJyAnfSk7XG4gKiAvLyA9PiA2MjI4ICoqKiogKioqKiAqKioqIDAxOFxuICpcbiAqIC8vIOeUqOaIt+WQjVxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICogcmVwbGFjZUNoYXIoJ+ael+afkOafkOafkCcsIHtzdGFydDogMSwgZW5kOiBJbmZpbml0eSwgcmVwZWF0OiAyfSk7XG4gKiAvLyA9PiDmnpcqKlxuICpcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZUNoYXIoc3RyID0gJycsIHsgc3RhcnQgPSAzLCBlbmQgPSAtNCwgY2hhciA9ICcqJywgcmVwZWF0LCBleGNsdWRlIH0gPSB7fSkge1xuICBjb25zdCBzdHJMZW4gPSBzdHIubGVuZ3RoO1xuXG4gIC8vIOW8gOWni+S9jee9rui2hei/h3N0cumVv+W6plxuICBpZiAoTWF0aC5hYnMoc3RhcnQpID49IHN0ckxlbikge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID49IDAgPyBzdGFydCA6IHN0ckxlbiArIHN0YXJ0O1xuICBlbmQgPSBlbmQgPj0gMCA/IGVuZCA6IHN0ckxlbiArIGVuZDtcblxuICAvLyDlvIDlp4vkvY3nva7lpKfkuo7nu5PmnZ/kvY3nva5cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICBsZXQgbWlkZGxlU3RyID0gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcblxuICBpZiAoZXhjbHVkZSkge1xuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoYFteJHtleGNsdWRlfV1gLCAnZycpO1xuICAgIG1pZGRsZVN0ciA9IG1pZGRsZVN0ci5yZXBsYWNlKHJlZywgY2hhcik7XG4gIH0gZWxzZSB7XG4gICAgcmVwZWF0ID0gdHlwZW9mIHJlcGVhdCA9PT0gJ251bWJlcicgJiYgcmVwZWF0ID49IDAgPyByZXBlYXQgOiBtaWRkbGVTdHIubGVuZ3RoO1xuICAgIG1pZGRsZVN0ciA9IGNoYXIucmVwZWF0KHJlcGVhdCk7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZygwLCBzdGFydCkgKyBtaWRkbGVTdHIgKyBzdHIuc3Vic3RyaW5nKGVuZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2VDaGFyO1xuIiwiaW1wb3J0IHsgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB7IGNvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcblxuLy8g566A5L2TXG5jb25zdCBjaG5OdW1iZXJDaGFyID0gWyfpm7YnLCAn5LiAJywgJ+S6jCcsICfkuIknLCAn5ZubJywgJ+S6lCcsICflha0nLCAn5LiDJywgJ+WFqycsICfkuZ0nXTtcbmNvbnN0IGNoblVuaXRDaGFyID0gWycnLCAn5Y2BJywgJ+eZvicsICfljYMnXTtcblxuLy8g57mB5L2TXG5jb25zdCBiaWc1TnVtYmVyQ2hhciA9IFsn6Zu2JywgJ+WjuScsICfotLAnLCAn5Y+BJywgJ+iChicsICfkvI0nLCAn6ZmGJywgJ+afkicsICfmjYwnLCAn546WJ107XG5jb25zdCBiaWc1VW5pdENoYXIgPSBbJycsICfmi74nLCAn5L2wJywgJ+S7nyddO1xuXG4vLyDmlbDlrZflrZfnrKbjgIHorqHmlbDljZXkvY1cblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgbnVtYmVyQ2hhcjtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nW119XG4gKiBAcHJpdmF0ZVxuICovXG5sZXQgdW5pdENoYXI7XG5cbi8qKlxuICogQHR5cGUge3N0cmluZ1tdfVxuICogQHByaXZhdGVcbiAqL1xubGV0IHVuaXRTZWN0aW9uO1xuXG4vKipcbiAqIOavj+S4quWwj+iKgueahOWGhemDqOi/m+ihjOi9rOWMllxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc2VjdGlvbiDmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi9rOWMlueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBzZWN0aW9uVG9DaGluZXNlKHNlY3Rpb24pIHtcbiAgbGV0IHN0ciA9ICcnLFxuICAgIGNobnN0ciA9ICcnLFxuICAgIHplcm8gPSBmYWxzZSwgLy96ZXJv5Li65piv5ZCm6L+b6KGM6KGl6Zu277yMIOesrOS4gOasoei/m+ihjOWPluS9meeUseS6juS4uuS4quS9jeaVsO+8jOm7mOiupOS4jeihpembtlxuICAgIHVuaXRQb3MgPSAwO1xuXG4gIHdoaWxlIChzZWN0aW9uID4gMCkge1xuICAgIC8vIOWvueaVsOWtl+WPluS9mTEw77yM5b6X5Yiw55qE5pWw5Y2z5Li65Liq5L2N5pWwXG4gICAgbGV0IHYgPSBzZWN0aW9uICUgMTA7XG5cbiAgICAvL+WmguaenOaVsOWtl+S4uumbtu+8jOWImeWvueWtl+espuS4sui/m+ihjOihpembtlxuICAgIGlmICh2ID09IDApIHtcbiAgICAgIGlmICh6ZXJvKSB7XG4gICAgICAgIC8v5aaC5p6c6YGH5Yiw6L+e57ut5aSa5qyh5Y+W5L2Z6YO95pivMO+8jOmCo+S5iOWPqumcgOihpeS4gOS4qumbtuWNs+WPr1xuICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICAgIGNobnN0ciA9IG51bWJlckNoYXJbdl0gKyBjaG5zdHI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8v56ys5LiA5qyh5Y+W5L2Z5LmL5ZCO77yM5aaC5p6c5YaN5qyh5Y+W5L2Z5Li66Zu277yM5YiZ6ZyA6KaB6KGl6Zu2XG4gICAgICB6ZXJvID0gdHJ1ZTtcbiAgICAgIHN0ciA9IG51bWJlckNoYXJbdl07XG4gICAgICBzdHIgKz0gdW5pdENoYXJbdW5pdFBvc107XG4gICAgICBjaG5zdHIgPSBzdHIgKyBjaG5zdHI7XG4gICAgfVxuICAgIHVuaXRQb3MrKztcbiAgICBzZWN0aW9uID0gTWF0aC5mbG9vcihzZWN0aW9uIC8gMTApO1xuICB9XG4gIHJldHVybiBjaG5zdHI7XG59XG5cbi8qKlxuICog6L2s5o2i5pW05pWwXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBudW0g6KaB6L2s5o2i55qE5pWw5a2XXG4gKiBAcmV0dXJucyB7c3RyaW5nfSDkuK3mlofmlbDlrZdcbiAqL1xuZnVuY3Rpb24gY29udmVydEludGVnZXIobnVtKSB7XG4gIG51bSA9IE1hdGguZmxvb3IobnVtKTtcblxuICBsZXQgdW5pdFBvcyA9IDA7XG4gIGxldCBzdHJJbnMgPSAnJyxcbiAgICBjaG5TdHIgPSAnJztcbiAgbGV0IG5lZWRaZXJvID0gZmFsc2U7XG5cbiAgaWYgKG51bSA9PT0gMCkge1xuICAgIHJldHVybiBudW1iZXJDaGFyWzBdO1xuICB9XG4gIHdoaWxlIChudW0gPiAwKSB7XG4gICAgdmFyIHNlY3Rpb24gPSBudW0gJSAxMDAwMDtcbiAgICBpZiAobmVlZFplcm8pIHtcbiAgICAgIGNoblN0ciA9IG51bWJlckNoYXJbMF0gKyBjaG5TdHI7XG4gICAgfVxuICAgIHN0cklucyA9IHNlY3Rpb25Ub0NoaW5lc2Uoc2VjdGlvbik7XG4gICAgc3RySW5zICs9IHNlY3Rpb24gIT09IDAgPyB1bml0U2VjdGlvblt1bml0UG9zXSA6IHVuaXRTZWN0aW9uWzBdO1xuICAgIGNoblN0ciA9IHN0cklucyArIGNoblN0cjtcbiAgICBuZWVkWmVybyA9IHNlY3Rpb24gPCAxMDAwICYmIHNlY3Rpb24gPiAwO1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gMTAwMDApO1xuICAgIHVuaXRQb3MrKztcbiAgfVxuICByZXR1cm4gY2huU3RyO1xufVxuXG4vKipcbiAqIOi9rOaNouWwj+aVsFxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOimgei9rOaNoueahOaVsOWtl1xuICovXG5mdW5jdGlvbiBjb252ZXJ0RGVjaW1hbChudW0pIHtcbiAgY29uc3QgbnVtU3RyID0gbnVtICsgJyc7XG4gIGNvbnN0IGluZGV4ID0gbnVtU3RyLmluZGV4T2YoJy4nKTtcblxuICBsZXQgcmV0ID0gJyc7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBsZXQgZGVjaW1hbFN0ciA9IG51bVN0ci5zbGljZShpbmRleCArIDEpO1xuICAgIHJldCA9IG1hcE51bWJlckNoYXIocGFyc2VJbnQoZGVjaW1hbFN0cikpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiDmmKDlsITkuLrkuK3mlofmlbDlrZdcbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG51bSDopoHlpITnkIbnmoTmlbDlrZdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOi/lOWbnuS4reaWh+aVsOWtl+eahOaYoOWwhFxuICovXG5mdW5jdGlvbiBtYXBOdW1iZXJDaGFyKG51bSkge1xuICBjb25zdCBudW1TdHIgPSBudW0gKyAnJztcbiAgbGV0IHJldCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBudW1TdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXQgKz0gbnVtYmVyQ2hhcltwYXJzZUludChudW1TdHJbaV0pXTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICog5pWw5a2X6L2s5Lit5paH5pWw5a2XXG4gKiDkuI3lnKjlronlhajmlbDlrZcgLTkwMDcxOTkyNTQ3NDA5OTHvvZ45MDA3MTk5MjU0NzQwOTkxIOWGhe+8jOWkhOeQhuS8muacieW8guW4uFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLm51bWJlclRvQ2hpbmVzZVxuICogQHNpbmNlIDEuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gbnVtIOaVsOWtl1xuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXSDphY3nva7poblcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMuYmlnNT1mYWxzZV0g57mB5L2TXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnVuaXQ9dHJ1ZV0g6K6h5pWw5Y2V5L2NXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMuZGVjaW1hbD1cIueCuVwiXSDkuK3mloflsI/mlbDngrlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy56ZXJvPVwi6Zu2XCJdIOiuvue9rjDjgILluLjnlKjphY3nva4g44CHXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMubmVnYXRpdmU9XCLotJ9cIl0g6LSf5pWw5YmN6Z2i55qE5a2XXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnMudW5pdENvbmZpZ10g6IqC54K55Y2V5L2N6YWN572uXG4gKiBAcGFyYW0ge3N0cmluZ30gW29wdGlvbnMudW5pdENvbmZpZy53PVwi5LiHXCJdIOiuvue9ruiuoeaVsOWNleS9jeS4h+OAguW4uOeUqOmFjee9riDokKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy51bml0Q29uZmlnLnk9XCLkur9cIl0g6K6+572u6K6h5pWw5Y2V5L2N5Lq/44CC5bi455So6YWN572uIOWEhFxuICogQHJldHVybnMge3N0cmluZ30g5Lit5paH5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDApO1xuICogLy8gPT4g5LiA55m+XG4gKlxuICogbnVtYmVyVG9DaGluZXNlKDEwMC4zKTtcbiAqIC8vID0+IOS4gOeZvueCueS4iVxuICpcbiAqIC8vIOe5geS9k1xuICogbnVtYmVyVG9DaGluZXNlKDEwMCwge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sFxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMDAuMywge2JpZzU6IHRydWV9KTtcbiAqIC8vID0+IOWjueS9sOeCueWPgVxuICpcbiAqIG51bWJlclRvQ2hpbmVzZSgxMjM0NTY3ODkwLCB7YmlnNTogdHJ1ZX0pO1xuICogLy8gPT4g5aO55ou+6LSw5Lq/5Y+B5Luf6IKG5L2w5LyN5ou+6ZmG5LiH5p+S5Luf5o2M5L2w546W5ou+XG4gKlxuICogLy8g5LiN5bim6K6h5pWw5Y2V5L2NXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3pm7ZcbiAqXG4gKiAvLyDkuI3luKborqHmlbDljZXkvY3vvIzkv67mlLkwXG4gKiBudW1iZXJUb0NoaW5lc2UoMTk5MCwge3VuaXQ6IGZhbHNlLCB6ZXJvOifjgIcnfSk7XG4gKiAvLyA9PiDkuIDkuZ3kuZ3jgIdcbiAqXG4gKi9cbmZ1bmN0aW9uIG51bWJlclRvQ2hpbmVzZShcbiAgbnVtLFxuICB7XG4gICAgYmlnNSA9IGZhbHNlLFxuICAgIHVuaXQgPSB0cnVlLFxuICAgIGRlY2ltYWwgPSAn54K5JyxcbiAgICB6ZXJvID0gJycsXG4gICAgbmVnYXRpdmUgPSAn6LSfJyxcbiAgICB1bml0Q29uZmlnID0ge1xuICAgICAgdzogJ+S4hycsIC8vICfokKwnXG4gICAgICB5OiAn5Lq/JyAvLyAn5YSEJ1xuICAgIH1cbiAgfSA9IHt9XG4pIHtcbiAgLy8g6Z2e5pWw5a2XIOaIliBOYU4g5LiN5aSE55CGXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyB8fCBpc05hTihudW0pKSB7XG4gICAgaWYgKCFjb25maWcuZGlzYWJsZVdhcm5pbmcpIHtcbiAgICAgIGNvbnNvbGUud2Fybihg5Y+C5pWw6ZSZ6K+vICR7bnVtfe+8jOivt+S8oOWFpeaVsOWtl2ApO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIC8vIOi2hei/h+WuieWFqOaVsOWtl+aPkOekulxuICBjaGVja0JvdW5kYXJ5KG51bSk7XG5cbiAgLy8g6K6+572u5pWw5a2X5a2X56ym5ZKM6K6h5pWw5Y2V5L2NXG4gIGlmIChiaWc1KSB7XG4gICAgbnVtYmVyQ2hhciA9IGJpZzVOdW1iZXJDaGFyLnNsaWNlKCk7XG4gICAgdW5pdENoYXIgPSBiaWc1VW5pdENoYXIuc2xpY2UoKTtcbiAgfSBlbHNlIHtcbiAgICBudW1iZXJDaGFyID0gY2huTnVtYmVyQ2hhci5zbGljZSgpO1xuICAgIHVuaXRDaGFyID0gY2huVW5pdENoYXIuc2xpY2UoKTtcbiAgfVxuXG4gIC8vIOiuvue9ruiKgueCueiuoeaVsOWNleS9je+8jOS4h+OAgeS6v+OAgeS4h+S6v1xuICBjb25zdCBkZWZhdWx0VW5pdFdhbiA9ICfkuIcnO1xuICBjb25zdCBkZWZhdWx0VW5pdFlpID0gJ+S6vyc7XG4gIHVuaXRTZWN0aW9uID0gWycnLCB1bml0Q29uZmlnLncgfHwgZGVmYXVsdFVuaXRXYW4sIHVuaXRDb25maWcueSB8fCBkZWZhdWx0VW5pdFlpLCB1bml0Q29uZmlnLncgJiYgdW5pdENvbmZpZy55ID8gdW5pdENvbmZpZy53ICsgdW5pdENvbmZpZy55IDogZGVmYXVsdFVuaXRXYW4gKyBkZWZhdWx0VW5pdFlpXTtcblxuICAvLyDorr7nva4wXG4gIGlmICh6ZXJvKSB7XG4gICAgbnVtYmVyQ2hhclswXSA9IHplcm87XG4gIH1cblxuICAvLyDliY3nva7lrZfnrKbvvIzotJ/mlbDlpITnkIZcbiAgY29uc3QgcHJlU3RyID0gbnVtIDwgMCA/IG5lZ2F0aXZlIDogJyc7XG5cbiAgLy8g5pW05pWw5ZKM5bCP5pWwXG4gIGxldCBjaG5JbnRlZ2VyLCBjaG5EZWNpbWFsO1xuXG4gIC8vIOWkhOeQhuaVtOaVsFxuICBpZiAodW5pdCkge1xuICAgIGNobkludGVnZXIgPSBjb252ZXJ0SW50ZWdlcihudW0pO1xuICB9IGVsc2Uge1xuICAgIGNobkludGVnZXIgPSBtYXBOdW1iZXJDaGFyKE1hdGguZmxvb3IobnVtKSk7XG4gIH1cblxuICAvLyDlpITnkIblsI/mlbBcbiAgY2huRGVjaW1hbCA9IGNvbnZlcnREZWNpbWFsKG51bSk7XG5cbiAgcmV0dXJuIGNobkRlY2ltYWwgPyBgJHtwcmVTdHJ9JHtjaG5JbnRlZ2VyfSR7ZGVjaW1hbH0ke2NobkRlY2ltYWx9YCA6IGAke3ByZVN0cn0ke2NobkludGVnZXJ9YDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbnVtYmVyVG9DaGluZXNlO1xuIiwiLyoqXG4gKiDlrZfoioLovazmjaLlrZjlgqjljZXkvY3vvIzkv53nlZky5L2N5bCP5pWw54K5XG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpQcm9jZXNzb3IuYnl0ZXNUb1NpemVcbiAqIEBzaW5jZSAzLjguMFxuICogQHBhcmFtIHtudW1iZXJ9IGJ5dGVzIOWtl+iKguWkp+Wwj1xuICogQHJldHVybnMge3N0cmluZ30g5a2Y5YKo5Y2V5L2N5YC8XG4gKiBAZXhhbXBsZVxuICpcbiAqIGJ5dGVzVG9TaXplKDApO1xuICogLy8gPT4gMCBCXG4gKlxuICogYnl0ZXNUb1NpemUoMTAyNCk7XG4gKiAvLyA9PiAxIEtCXG4gKlxuICogYnl0ZXNUb1NpemUoMy4yMTMyNDMqMTAyNCoxMDI0KTtcbiAqIC8vID0+IDMuMjEgTUJcbiAqXG4gKiBieXRlc1RvU2l6ZSgxMDI0KjEwMjQqMTAyNCk7XG4gKiAvLyA9PiAxIEdCXG4gKi9cbmZ1bmN0aW9uIGJ5dGVzVG9TaXplKGJ5dGVzKSB7XG4gIGlmIChieXRlcyA9PT0gMCkgcmV0dXJuICcwIEInO1xuICBjb25zdCBrID0gMTAyNDtcbiAgLy8g5a2Y5YKo5Y2V5L2NXG4gIGNvbnN0IHNpemVzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XG4gIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKGJ5dGVzKSAvIE1hdGgubG9nKGspKTtcblxuICByZXR1cm4gc2l6ZXNbaV0gPyBgJHtOdW1iZXIoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoMikpfSAke3NpemVzW2ldfWAgOiBieXRlcyArICcnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBieXRlc1RvU2l6ZTtcbiIsImltcG9ydCBpc0lkQ2FyZCBmcm9tICcuL2lzSWRDYXJkJztcblxuY29uc3QgcmVnSWRDYXJkID0gL14oPzxwcm92aW5jZT5cXGR7Mn0pKD88Y2l0eT5cXGR7Mn0pKD88YXJlYT5cXGR7Mn0pKD88eWVhcj4oPzpcXGR7Mn0pP1xcZHsyfSkoPzxtb250aD5cXGR7Mn0pKD88ZGF5PlxcZHsyfSlcXGR7Mn0oPzxnZW5kZXI+XFxkKSg/OlxcZHxYKT8kL2k7XG5cbmNvbnN0IFByb3ZpbmNlcyA9IFtcbiAgLy8g5Y2O5YyX5Zyw5Yy677ya5YyX5Lqs5biCfDExMDAwMO+8jOWkqea0peW4gnwxMjAwMDDvvIzmsrPljJfnnIF8MTMwMDAw77yM5bGx6KW/55yBfDE0MDAwMO+8jOWGheiSmeWPpOiHquayu+WMunwxNTAwMDBcbiAgWycxMScsICfljJfkuqzluIInXSxcbiAgWycxMicsICflpKnmtKXluIInXSxcbiAgWycxMycsICfmsrPljJfnnIEnXSxcbiAgWycxNCcsICflsbHopb/nnIEnXSxcbiAgWycxNScsICflhoXokpnlj6Toh6rmsrvljLonXSxcblxuICAvLyDkuJzljJflnLDljLrvvJog6L695a6B55yBfDIxMDAwMO+8jOWQieael+ecgXwyMjAwMDDvvIzpu5HpvpnmsZ/nnIF8MjMwMDAwXG4gIFsnMjEnLCAn6L695a6B55yBJ10sXG4gIFsnMjInLCAn5ZCJ5p6X55yBJ10sXG4gIFsnMjMnLCAn6buR6b6Z5rGf55yBJ10sXG5cbiAgLy8g5Y2O5Lic5Zyw5Yy677yaIOS4iua1t+W4gnwzMTAwMDDvvIzmsZ/oi4/nnIF8MzIwMDAw77yM5rWZ5rGf55yBfDMzMDAwMO+8jOWuieW+veecgXwzNDAwMDDvvIznpo/lu7rnnIF8MzUwMDAw77yM5rGf6KW/55yBfDM2MDAwMO+8jOWxseS4nOecgXwzNzAwMDBcbiAgWyczMScsICfkuIrmtbfluIInXSxcbiAgWyczMicsICfmsZ/oi4/nnIEnXSxcbiAgWyczMycsICfmtZnmsZ/nnIEnXSxcbiAgWyczNCcsICflronlvr3nnIEnXSxcbiAgWyczNScsICfnpo/lu7rnnIEnXSxcbiAgWyczNicsICfmsZ/opb/nnIEnXSxcbiAgWyczNycsICflsbHkuJznnIEnXSxcblxuICAvLyDljY7kuK3lnLDljLrvvJog5rKz5Y2X55yBfDQxMDAwMO+8jOa5luWMl+ecgXw0MjAwMDDvvIzmuZbljZfnnIF8NDMwMDAwXG4gIFsnNDEnLCAn5rKz5Y2X55yBJ10sXG4gIFsnNDInLCAn5rmW5YyX55yBJ10sXG4gIFsnNDMnLCAn5rmW5Y2X55yBJ10sXG5cbiAgLy8g5Y2O5Y2X5Zyw5Yy677ya5bm/5Lic55yBfDQ0MDAwMO+8jOW5v+ilv+WjruaXj+iHquayu+WMunw0NTAwMDDvvIzmtbfljZfnnIF8NDYwMDAwXG4gIFsnNDQnLCAn5bm/5Lic55yBJ10sXG4gIFsnNDUnLCAn5bm/6KW/5aOu5peP6Ieq5rK75Yy6J10sXG4gIFsnNDYnLCAn5rW35Y2X55yBJ10sXG5cbiAgLy8g6KW/5Y2X5Zyw5Yy677ya6YeN5bqG5biCfDUwMDAwMO+8jOWbm+W3neecgXw1MTAwMDDvvIzotLXlt57nnIF8NTIwMDAw77yM5LqR5Y2X55yBfDUzMDAwMO+8jOilv+iXj+iHquayu+WMunw1NDAwMDBcbiAgWyc1MCcsICfph43luobluIInXSxcbiAgWyc1MScsICflm5vlt53nnIEnXSxcbiAgWyc1MicsICfotLXlt57nnIEnXSxcbiAgWyc1MycsICfkupHljZfnnIEnXSxcbiAgWyc1NCcsICfopb/ol4/oh6rmsrvljLonXSxcblxuICAvLyDopb/ljJflnLDljLrvvJog6ZmV6KW/55yBfDYxMDAwMO+8jOeUmOiCg+ecgXw2MjAwMDDvvIzpnZLmtbfnnIF8NjMwMDAw77yM5a6B5aSP5Zue5peP6Ieq5rK75Yy6fDY0MDAwMO+8jOaWsOeWhue7tOWQvuWwlOiHquayu+WMunw2NTAwMDBcbiAgWyc2MScsICfpmZXopb/nnIEnXSxcbiAgWyc2MicsICfnlJjogoPnnIEnXSxcbiAgWyc2MycsICfpnZLmtbfnnIEnXSxcbiAgWyc2NCcsICflroHlpI/lm57ml4/oh6rmsrvljLonXSxcbiAgWyc2NScsICfmlrDnlobnu7TlkL7lsJToh6rmsrvljLonXSxcblxuICAvLyDlj7Dmub7lnLDljLrvvJrlj7Dmub7nnIF8NzEwMDAwXG4gIC8vIOWPsOa5vuWxheawkeWFrOawkei6q+S7veWPt+eggeWcsOWdgOeggeS4ujgzMDAwMO+8jOWPguiAgyBodHRwOi8vd3d3LndhbndlaWJhaWtlLmNvbS93aWtpLeS4reWNjuS6uuawkeWFseWSjOWbveihjOaUv+WMuuWIkuS7o+eggV8oN+WMuinjgIFodHRwczovL3poLndpa2lwZWRpYS5vcmcvd2lraS/muK/mvrPlj7DlsYXmsJHlsYXkvY/or4FcbiAgWyc3MScsICflj7Dmub7nnIEnXSxcbiAgWyc4MycsICflj7Dmub7nnIEnXSxcblxuICAvLyDmuK/mvrPlnLDljLrvvJrpppnmuK/nibnliKvooYzmlL/ljLp8ODEwMDAw77yM5r6z6Zeo54m55Yir6KGM5pS/5Yy6fDgyMDAwMFxuICBbJzgxJywgJ+mmmea4r+eJueWIq+ihjOaUv+WMuiddLFxuICBbJzgyJywgJ+a+s+mXqOeJueWIq+ihjOaUv+WMuiddXG5dO1xuXG4vLyDnrKzkuIDkvY3mlbDlrZfmmK/ku6XliY3nmoTlpKfljLrliLbku6PnoIHjgILnrKzkuozkvY3mmK/lpKfljLrmiYDlnKjnnIHluILnvJbnoIHjgILlhajlm73lhbHliIbkuLo45Liq5aSn5Yy677ya5Y2O5YyX77yIMe+8ieOAgeS4nOWMl++8iDLvvInjgIHljY7kuJzvvIgz77yJ44CB5Lit5Y2X77yINO+8ieOAgeilv+WNl++8iDXvvInjgIHopb/ljJfvvIg277yJ44CB5Y+w5rm+77yIN++8ieWSjOa4r+a+s++8iDjvvInjgIJcbi8vIGNvbnN0IFJlZ2lvbnMgPSBbXG4vLyAgIFsnMScsICfljY7ljJflnLDljLonXSxcbi8vICAgWycyJywgJ+S4nOWMl+WcsOWMuiddLFxuLy8gICBbJzMnLCAn5Y2O5Lic5Zyw5Yy6J10sXG4vLyAgIFsnNCcsICfkuK3ljZflnLDljLonXSxcbi8vICAgWyc1JywgJ+ilv+WNl+WcsOWMuiddLFxuLy8gICBbJzYnLCAn6KW/5YyX5Zyw5Yy6J10sXG4vLyAgIFsnNycsICflj7Dmub7lnLDljLonXSxcbi8vICAgWyc4JywgJ+a4r+a+s+WcsOWMuiddXG4vLyBdO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IElkQ2FyZE9yaWdpbiAtIOino+aekOi6q+S7veivgeWOn+aVsOaNrlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3ZpbmNlIC0g55yB5Lu957yW56CBXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY2l0eSAtIOWfjuW4gue8lueggVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFyZWEgLSDlnLDljLrnvJbnoIFcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB5ZWFyIC0g5Ye655Sf5bm0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gbW9udGggLSDlh7rnlJ/mnIhcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkYXkgLSDlh7rnlJ/ml6VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBnZW5kZXIgLSDmgKfliKsg6IO95pW06ZmkMuS4uuWls++8jOWQpuWImeS4uueUt1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSWRDYXJkSW5mbyAtIOi6q+S7veivgeS/oeaBr1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb3ZpbmNlIC0g55yB5Lu9XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYmlydGhkYXkgLSDnlJ/ml6VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBnZW5kZXIgLSDmgKfliKtcbiAqIEBwcm9wZXJ0eSB7SWRDYXJkT3JpZ2lufSBvcmlnaW4gLSDop6PmnpDouqvku73or4Hljp/mlbDmja5cbiAqL1xuXG4vKipcbiAqIOino+aekOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE144CBMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5wYXJzZUlkQ2FyZFxuICogQHNpbmNlIDQuMC4wXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9iYWlrZS5iYWlkdS5jb20vaXRlbS/lsYXmsJHouqvku73or4Hlj7fnoIF85bGF5rCR6Lqr5Lu96K+B5Y+356CBfVxuICogQHBhcmFtIHtzdHJpbmd9IGlkIOi6q+S7veivgeWPt+egge+8jOaUr+aMgTE15L2NXG4gKiBAcmV0dXJucyB7bnVsbHxJZENhcmRJbmZvfSBudWxsIOaIliDnnIHku73jgIHnlJ/ml6XjgIHmgKfliKvvvIznnIEv5biCL+WMui/lubQv5pyIL+aXpS/mgKfliKvnvJbnoIFcbiAqIEBleGFtcGxlXG4gKiBwYXJzZUlkQ2FyZCgnMTIzNDU2Nzg5MTIzNDU2Jyk7XG4gKiAvLyA9PiBudWxsXG4gKlxuICogLy8gMTjkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDExOTkzMTAzMDIyODgnKVxuICogLy8gPT5cbiAqIHtcbiAqICAgYmlydGhkYXk6IFwiMTk5My0xMC0zMFwiLFxuICogICBnZW5kZXI6IFwi5aWzXCIsXG4gKiAgIG9yaWdpbjogeyBwcm92aW5jZTogXCIxM1wiLCBjaXR5OiBcIjA3XCIsIGFyZWE6IFwiMDFcIiwgeWVhcjogXCIxOTkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gKiAgIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG4gKiB9XG4gKlxuICogLy8gMTXkvY3ouqvku73or4Hlj7fnoIFcbiAqIHBhcnNlSWRDYXJkKCcxMzA3MDE5MzEwMzAyMjgnKTtcbiAqIC8vID0+XG4gKiB7XG4gKiAgIGJpcnRoZGF5OiBcIjkzLTEwLTMwXCIsXG4gKiAgIGdlbmRlcjogXCLlpbNcIixcbiAqICAgb3JpZ2luOiB7IHByb3ZpbmNlOiBcIjEzXCIsIGNpdHk6IFwiMDdcIiwgYXJlYTogXCIwMVwiLCB5ZWFyOiBcIjkzXCIsIG1vbnRoOiBcIjEwXCIsIGRheTogXCIzMFwiLCBnZW5kZXI6IFwiOFwiIH0sXG4gKiAgIHByb3ZpbmNlOiBcIuays+WMl+ecgVwiXG4gKiB9XG4gKlxuICovXG5mdW5jdGlvbiBwYXJzZUlkQ2FyZChpZCkge1xuICBpZiAoIWlzSWRDYXJkKGlkLCB7IGxvb3NlOiB0cnVlIH0pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBpbmZvID0gcmVnSWRDYXJkLmV4ZWMoaWQpO1xuXG4gIGlmICghaW5mbykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0eXBlIHt7IHByb3ZpbmNlOiBzdHJpbmcsIGNpdHk6IHN0cmluZywgYXJlYTogc3RyaW5nLCB5ZWFyOiBzdHJpbmcsIG1vbnRoOiBzdHJpbmcsIGRheTogc3RyaW5nLCBnZW5kZXI6IHN0cmluZyB9fVxuICAgKlxuICAgKi9cbiAgbGV0IG9yaWdpbiA9IHtcbiAgICBwcm92aW5jZTogJycsXG4gICAgY2l0eTogJycsXG4gICAgYXJlYTogJycsXG4gICAgeWVhcjogJycsXG4gICAgbW9udGg6ICcnLFxuICAgIGRheTogJycsXG4gICAgZ2VuZGVyOiAnJ1xuICB9O1xuXG4gIGlmIChpbmZvLmdyb3Vwcykge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW4gPSBpbmZvLmdyb3VwcztcbiAgfSBlbHNlIHtcbiAgICBvcmlnaW4gPSB7XG4gICAgICBwcm92aW5jZTogaW5mb1sxXSxcbiAgICAgIGNpdHk6IGluZm9bMl0sXG4gICAgICBhcmVhOiBpbmZvWzNdLFxuICAgICAgeWVhcjogaW5mb1s0XSxcbiAgICAgIG1vbnRoOiBpbmZvWzVdLFxuICAgICAgZGF5OiBpbmZvWzZdLFxuICAgICAgZ2VuZGVyOiBpbmZvWzddXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHByb3ZpbmNlID0gUHJvdmluY2VzLmZpbmQoKGl0ZW0pID0+IGl0ZW1bMF0gPT09IG9yaWdpbi5wcm92aW5jZSk7XG5cbiAgaWYgKCFwcm92aW5jZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgYmlydGhkYXkgPSBgJHtvcmlnaW4ueWVhcn0tJHtvcmlnaW4ubW9udGh9LSR7b3JpZ2luLmRheX1gO1xuICBjb25zdCBnZW5kZXIgPSBOdW1iZXIob3JpZ2luLmdlbmRlcikgJSAyID09PSAwID8gJ+WlsycgOiAn55S3JztcbiAgLy8gY29uc3QgcmVnaW9uID0gUmVnaW9ucy5maW5kKGl0ZW0gPT4gaXRlbVswXSA9PT0gb3JpZ2luLnByb3ZpbmNlPy5zdWJzdHJpbmcoMCwgMSkpO1xuXG4gIHJldHVybiB7XG4gICAgLy8gcmVnaW9uLFxuICAgIHByb3ZpbmNlOiBwcm92aW5jZVsxXSxcbiAgICBiaXJ0aGRheSxcbiAgICBnZW5kZXIsXG4gICAgb3JpZ2luXG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBhcnNlSWRDYXJkO1xuIiwiLy8gIGZpbGXjgIFibG9i5paH5Lu25aaC5L2V6aKE6KeI5Zu+54mH77yfXG4vLyAg5pa55rOVMe+8muWwhmZpbGXmiJbogIVibG9i57G75Z6L5paH5Lu26L2s5oiQYmFzZTY05pWw5o2u77yM5YaN5L2c5Li6c3Jj6LWL5YC857uZaW1n5qCH562+XG4vLyAg5pa55rOVMu+8muS9v+eUqCB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKSDkuLpibG9i44CBZmlsZSDliJvlu7rkuIDkuKrmjIflkJHor6Xlj4LmlbDlr7nosaHnmoRVUkxcblxuLyoqXG4gKiDlsIYgQmxvYiDmiJYgRmlsZSDlr7nosaHovazmiJAgZGF0YTpVUkwg5qC85byP55qEIEJhc2U2NCDlrZfnrKbkuLLjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5ibG9iVG9EYXRhVVJMXG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvemgtQ04vZG9jcy9XZWIvQVBJL0ZpbGVSZWFkZXIvcmVhZEFzRGF0YVVSTHxGaWxlUmVhZGVyLnJlYWRBc0RhdGFVUkwoKX1cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtCbG9ifSBibG9iIEJsb2Ig5oiWIEZpbGUg5a+56LGhXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBkYXRhOlVSTCDmoLzlvI/nmoQgQmFzZTY0IOWtl+espuS4suOAglxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFGaWxlUGFydHMgPSBbJzxhIGlkPVwiYVwiPjxiIGlkPVwiYlwiPmhleSE8L2I+PC9hPiddOyAvLyDkuIDkuKrljIXlkKtET01TdHJpbmfnmoTmlbDnu4RcbiAqIGNvbnN0IGh0bWxCbG9iID0gbmV3IEJsb2IoYUZpbGVQYXJ0cywgeyB0eXBlOiAndGV4dC9odG1sJyB9KTsgLy8g5b6X5YiwIGJsb2JcbiAqXG4gKiBibG9iVG9EYXRhVVJMKGh0bWxCbG9iKS50aGVuKGRhdGE9PntcbiAqICAgY29uc29sZS5sb2coZGF0YSk7IC8vIGRhdGE6dGV4dC9odG1sO2Jhc2U2NCxQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PVxuICogfSk7XG4gKlxuICogY29uc3QgdGV4dEJsb2IgPSBuZXcgQmxvYihhRmlsZVBhcnRzLCB7IHR5cGU6ICd0ZXh0L3BsYWluJyB9KTtcbiAqXG4gKiBibG9iVG9EYXRhVVJMKHRleHRCbG9iKS50aGVuKGRhdGE9PntcbiAqICAgY29uc29sZS5sb2coZGF0YSk7IC8vIGRhdGE6dGV4dC9wbGFpbjtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIH0pO1xuICovXG5mdW5jdGlvbiBibG9iVG9EYXRhVVJMKGJsb2IpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGJsb2IpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJsb2JUb0RhdGFVUkw7XG4iLCIvKipcbiAqIOWwhiBEYXRhVVJMIOi9rOS4uiBCbG9iIOWvueixoVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmRhdGFVUkxUb0Jsb2JcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL0dsb3NzYXJ5L0Jhc2U2NHxCYXNlNjR9XG4gKiBAc2luY2UgNC4xLjBcbiAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhdXJsIGRhdGE6IOWNj+iurueahFVSTFxuICogQHJldHVybnMge0Jsb2J9IEJsb2Ig5a+56LGhXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YXVybCA9ICdkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND0nO1xuICogZGF0YVVSTFRvQmxvYihkYXRhdXJsKTtcbiAqL1xuZnVuY3Rpb24gZGF0YVVSTFRvQmxvYihkYXRhdXJsKSB7XG4gIGNvbnN0IGFyciA9IGRhdGF1cmwuc3BsaXQoJywnKTtcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtaW1lID0gYXJyWzBdLm1hdGNoKC86KC4qPyk7LylbMV07XG4gIGNvbnN0IGJzdHIgPSBhdG9iKGFyclsxXSk7XG4gIGxldCBuID0gYnN0ci5sZW5ndGg7XG4gIGNvbnN0IHU4YXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG5cbiAgd2hpbGUgKG4tLSkge1xuICAgIHU4YXJyW25dID0gYnN0ci5jaGFyQ29kZUF0KG4pO1xuICB9XG4gIHJldHVybiBuZXcgQmxvYihbdThhcnJdLCB7IHR5cGU6IG1pbWUgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGFVUkxUb0Jsb2I7XG4iLCIvKipcbiAqIOiuvue9riBEYXRhVVJMIOWJjee8gOOAgU1JTUUg57G75Z6L44CBYmFzZTY0IOagh+ivhuOAgjxici8+XG4gKiDlpoLmnpzkvaDpnIDopoHojrflj5ZEYXRhVVJMIOeahCBNSU1FIOexu+Wei+WSjOaVsOaNruacrOi6q++8jOaOqOiNkOS9v+eUqCA8YSBocmVmPVwiaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvZGF0YS11cmxzXCI+ZGF0YS11cmxzPC9hPuOAglxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLnNldERhdGFVUkxQcmVmaXhcbiAqIEBzZWUg5Y+C6ICDIHtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVFRQL0Jhc2ljc19vZl9IVFRQL0RhdGFfVVJJc3xEYXRhIFVSTHN9XG4gKiBAc2VlIOWPguiAgyB7QGxpbmsgaHR0cHM6Ly9taW1lc25pZmYuc3BlYy53aGF0d2cub3JnLyN1bmRlcnN0YW5kaW5nLW1pbWUtdHlwZXN8TUlNRSB0eXBlc31cbiAqIEBzaW5jZSA0LjEuMFxuICogQHBhcmFtIHtzdHJpbmd9IGRhdGEg5pWw5o2u5pys6LqrXG4gKiBAcGFyYW0ge3N0cmluZ30gW21pbWV0eXBlPVwiaW1hZ2UvcG5nXCJdIE1JTUUg57G75Z6LXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtiYXNlNjQ9dHJ1ZV0g5re75YqgIGJhc2U2NCDmoIfor4ZcbiAqIEByZXR1cm5zIHtzdHJpbmd9IERhdGFVUkwg5qC85byP55qE5a2X56ym5LiyXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YSA9ICdQR0VnYVdROUltRWlQanhpSUdsa1BTSmlJajVvWlhraFBDOWlQand2WVQ0PSc7XG4gKiBzZXREYXRhVVJMUHJlZml4KGRhdGEpOyAvLyBkYXRhOmltYWdlL3BuZztiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ2ltYWdlL3BuZycsIGZhbHNlKTsgLy8gZGF0YTppbWFnZS9wbmcsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ2ltYWdlL2pwZycpOyAvLyBkYXRhOmltYWdlL2pwZztiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJ3RleHQvaHRtbCcpOyAvLyBkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJycpOyAvLyBkYXRhOjtiYXNlNjQsUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqIHNldERhdGFVUkxQcmVmaXgoZGF0YSwgJycsIGZhbHNlKTsgLy8gZGF0YTosUEdFZ2FXUTlJbUVpUGp4aUlHbGtQU0ppSWo1b1pYa2hQQzlpUGp3dllUND1cbiAqL1xuZnVuY3Rpb24gc2V0RGF0YVVSTFByZWZpeChkYXRhLCBtaW1ldHlwZSA9ICdpbWFnZS9wbmcnLCBiYXNlNjQgPSB0cnVlKSB7XG4gIHJldHVybiBgZGF0YToke21pbWV0eXBlfSR7YmFzZTY0ID8gJztiYXNlNjQnIDogJyd9LCR7ZGF0YX1gO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzZXREYXRhVVJMUHJlZml4O1xuIiwiaW1wb3J0IGlzTmlsIGZyb20gJy4vdXRpbHMvdHlwZS9pc05pbCc7XG5cbi8vIFRPRE86IOWHveaVsOmHjei9ve+8jOexu+Wei+WPgueFpyBEYXRlXG5cbi8qKlxuICog5Yib5bu65LiA5LiqIERhdGUg5a6e5L6L5pel5pyf5a+56LGh77yM5ZCMIG5ldyBEYXRlKCkg44CCPGJyLz5cbiAqIOinhOmBv+S6huiLueaenOiuvuWkh+a1j+iniOWZqOS4jeaUr+aMgemDqOWIhuagvOW8j++8iFlZWVktTU0tREQgSEgtbW0g5oiWIFlZWVkuTU0uRETvvInjgIJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlByb2Nlc3Nvci5zYWZlRGF0ZVxuICogQHNlZSDlj4LogIMge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL3poLUNOL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGV8RGF0ZX1cbiAqIEBzaW5jZSA0LjQuMFxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfERhdGV9IFt2YWx1ZV0g5pel5pyf5pe26Ze05a2X56ym5Liy44CB5q+r56eS5pWw44CB5pel5pyf5a+56LGhXG4gKiBAcGFyYW0gey4uLm51bWJlcn0gYXJncyDmnIgv5pelL+aXti/liIYv56eSL+avq+enklxuICogQHJldHVybnMge0RhdGV9IERhdGUg5a6e5L6L5pel5pyf5a+56LGhXG4gKiBAZXhhbXBsZVxuICogc2FmZURhdGUoJzIwMjItMS0xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIvMS8xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIuMS4xJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoJzIwMjIuMS4xIDExOjExJyk7IC8vIFNhdCBKYW4gMDEgMjAyMiAxMToxMTowMCBHTVQrMDgwMCAo5Lit5Zu95qCH5YeG5pe26Ze0KVxuICogc2FmZURhdGUoOTksIDEpOyAvLyBNb24gRmViIDAxIDE5OTkgMDA6MDA6MDAgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqIHNhZmVEYXRlKDE2NDY3MTEyMzMxNzEpOyAvLyBUdWUgTWFyIDA4IDIwMjIgMTE6NDc6MTMgR01UKzA4MDAgKOS4reWbveagh+WHhuaXtumXtClcbiAqXG4gKi9cbmZ1bmN0aW9uIHNhZmVEYXRlKHZhbHVlLCAuLi5hcmdzKSB7XG4gIGNvbnN0IHNhZmVWYWx1ZSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZS5yZXBsYWNlKC9bXFxcXC4tXS9nLCAnLycpIDogdmFsdWU7XG5cbiAgaWYgKGFyZ3MgJiYgYXJncy5sZW5ndGggPiAwKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgRGF0ZShzYWZlVmFsdWUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gaXNOaWwoc2FmZVZhbHVlKSA/IG5ldyBEYXRlKCkgOiBuZXcgRGF0ZShzYWZlVmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzYWZlRGF0ZTtcbiIsImltcG9ydCBub3JtYWxpemVTdHJpbmcgZnJvbSAnLi9ub3JtYWxpemVTdHJpbmcnO1xuXG4vKipcbiAqIOagvOW8j+WMluaJi+acuuWPt+eggVxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6UHJvY2Vzc29yLmZvcm1hdE1vYmlsZVxuICogQHNpbmNlIDQuNS4wXG4gKiBAcGFyYW0ge3N0cmluZ30gbW9iaWxlTm8g5omL5py65Y+356CBXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLmNoYXI9JyAnXSDpl7TpmpTlrZfnrKZcbiAqIEByZXR1cm5zIHtzdHJpbmd9IOagvOW8j+WMluWQjueahOaJi+acuuWPt+eggVxuICogQGV4YW1wbGVcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2Nzg5MDAnKSAvLyAnMTMzIDQ1NjcgODkwMCdcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2Nzg5MDAnLCB7IGNoYXI6ICctJyB9KSAvLyAnMTMzLTQ1NjctODkwMCdcbiAqXG4gKiAvLyDohLHmlY/miYvmnLrlj7fnoIFcbiAqIGZvcm1hdE1vYmlsZSgnMTMzKioqKjEyMzQnKSAvLyAnMTMzICoqKiogMTIzNCdcbiAqIGZvcm1hdE1vYmlsZSgnMTMzKioqKjEyMzQnLCB7IGNoYXI6ICctJyB9KSAvLyAnMTMzLSoqKiotMTIzNCdcbiAqXG4gKiAvLyDmiYvmnLrlj7fnoIHkvY3mlbDkuI3lpJ9cbiAqIGZvcm1hdE1vYmlsZSgnMTMzJykgLy8gJzEzMydcbiAqIGZvcm1hdE1vYmlsZSgnMTMzNDU2JykgLy8gJzEzMyA0NTYnXG4gKiBmb3JtYXRNb2JpbGUoJzEzMzQ1Njc4JykgLy8gJzEzMyA0NTY3IDgnXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdE1vYmlsZShtb2JpbGVObywgeyBjaGFyID0gJyAnIH0gPSB7fSkge1xuICBjb25zdCByZWdDaGFyID0gbmV3IFJlZ0V4cChjaGFyLCAnZycpO1xuICBjb25zdCByZWFsVmFsdWUgPSBub3JtYWxpemVTdHJpbmcobW9iaWxlTm8pLnJlcGxhY2UocmVnQ2hhciwgJycpLnN1YnN0cmluZygwLCAxMSk7XG5cbiAgaWYgKHJlYWxWYWx1ZS5sZW5ndGggPiA3KSB7XG4gICAgcmV0dXJuIHJlYWxWYWx1ZS5yZXBsYWNlKC9eKC4uLikoLi4uLikvZywgYCQxJHtjaGFyfSQyJHtjaGFyfWApO1xuICB9XG4gIGlmIChyZWFsVmFsdWUubGVuZ3RoID4gMykge1xuICAgIHJldHVybiByZWFsVmFsdWUucmVwbGFjZSgvXiguLi4pL2csIGAkMSR7Y2hhcn1gKTtcbiAgfVxuICByZXR1cm4gcmVhbFZhbHVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmb3JtYXRNb2JpbGU7XG4iLCJpbXBvcnQgaXNUeXBlIGZyb20gJy4vaXNUeXBlJztcblxuLyoqXG4gKiDmo4Dmn6XlgLzmmK/lkKbkuLpOdW1iZXJcbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOlR5cGUuaXNOdW1iZXJcbiAqIEBzaW5jZSAxLjEuMFxuICogQHBhcmFtIHsqfSB2YWx1ZSDmo4Dmn6XlgLxcbiAqIEByZXR1cm5zIHtib29sZWFufSDmmK/lkKbkuLpOdW1iZXJcbiAqIEBleGFtcGxlXG4gKlxuICogaXNOdW1iZXIoMSlcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKEluZmluaXR5KVxuICogLy8gPT4gdHJ1ZVxuICpcbiAqIGlzTnVtYmVyKE5hTilcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBpc051bWJlcignMScpXG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc051bWJlcih2YWx1ZSkge1xuICByZXR1cm4gaXNUeXBlKHZhbHVlLCAnTnVtYmVyJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwiaW1wb3J0IHsgZGlnaXRMZW5ndGgsIGZsb2F0MkZpeGVkLCBjaGVja0JvdW5kYXJ5IH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5LmY5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45LmYXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnRpbWVzXG4gKiBAc2luY2UgMy4xLjBcbiAqIEBwYXJhbSB7Li4ubnVtYmVyfHN0cmluZ30gbnVtcyDnm7jkuZjnmoTmlbBcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOS5mOenr1xuICogQGV4YW1wbGVcbiAqXG4gKiB0aW1lcygzLCAwLjYpO1xuICogLy8gPT4gMS44XG4gKlxuICogdGltZXMoMywgMC42LCAyKTtcbiAqIC8vID0+IDMuNlxuICpcbiAqIHRpbWVzKDMsIDAuNiwgMiwgMTApO1xuICogLy8gPT4gMzZcbiAqL1xuZnVuY3Rpb24gdGltZXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHRpbWVzKHRpbWVzKG51bTEsIG51bTIpLCAuLi5yZXN0KTtcbiAgfVxuXG4gIC8vIOWFvOWuueWkhOeQhu+8jOWmguaenOesrDLkuKrlj4LmlbDkuLrpnZ7mlbDlrZfmiJblrZfnrKbkuLLml7bvvIzov5Tlm57nrKzkuIDkuKrlj4LmlbBcbiAgaWYgKCghaXNOdW1iZXIobnVtMikgfHwgaXNOYU4obnVtMikpICYmICFpc1N0cmluZyhudW0yKSkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gbnVtMTtcbiAgfVxuXG4gIGNvbnN0IG51bTFDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMSk7XG4gIGNvbnN0IG51bTJDaGFuZ2VkID0gZmxvYXQyRml4ZWQobnVtMik7XG4gIGNvbnN0IGJhc2VOdW0gPSBkaWdpdExlbmd0aChudW0xKSArIGRpZ2l0TGVuZ3RoKG51bTIpO1xuICBjb25zdCBsZWZ0VmFsdWUgPSBudW0xQ2hhbmdlZCAqIG51bTJDaGFuZ2VkO1xuXG4gIGNoZWNrQm91bmRhcnkobGVmdFZhbHVlKTtcblxuICByZXR1cm4gbGVmdFZhbHVlIC8gTWF0aC5wb3coMTAsIGJhc2VOdW0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB0aW1lcztcbiIsImltcG9ydCB7IGRpZ2l0TGVuZ3RoIH0gZnJvbSAnLi91dGlscy9tYXRoLnV0aWwnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuaW1wb3J0IHsgaXNOdW1iZXIsIGlzTmFOLCBpc1N0cmluZyB9IGZyb20gJy4vdXRpbHMvdHlwZSc7XG5cbi8qKlxuICog57K+56Gu5Yqg5rOV77yM5pSv5oyB5aSa5Liq5pWw55u45YqgXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpNYXRoLnBsdXNcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOebuOWKoOeahOaVsFxuICogQHJldHVybnMge251bWJlcn0g5oC75ZKMXG4gKiBAZXhhbXBsZVxuICpcbiAqIHBsdXMoMC4xLCAwLjIpO1xuICogLy8gPT4gMC4zXG4gKlxuICogcGx1cygwLjEsIDAuMiwgMC4zKTtcbiAqIC8vID0+IDAuNlxuICpcbiAqIHBsdXMoMC4xLCAwLjIsIDAuMywgMC40KTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gcGx1cyguLi5udW1zKSB7XG4gIGNvbnN0IFtudW0xLCBudW0yLCAuLi5yZXN0XSA9IG51bXM7XG5cbiAgaWYgKHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBwbHVzKHBsdXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSArIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHBsdXM7XG4iLCJpbXBvcnQgeyBkaWdpdExlbmd0aCB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehruWHj+azle+8jOaUr+aMgeWkmuS4quaVsOebuOWHj1xuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5taW51c1xuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0gey4uLm51bWJlcnxzdHJpbmd9IG51bXMg55u45YeP55qE5pWwXG4gKiBAcmV0dXJucyB7bnVtYmVyfSDlt65cbiAqIEBleGFtcGxlXG4gKlxuICogbWludXMoMSwgMC45KTtcbiAqIC8vID0+IDAuMVxuICpcbiAqIG1pbnVzKDEsIDAuOSwgMC4wMik7XG4gKiAvLyA9PiAwLjA4XG4gKlxuICogbWludXMoMSwgMC45LCAwLjAyLCAwLjA4KTtcbiAqIC8vID0+IDBcbiAqL1xuZnVuY3Rpb24gbWludXMoLi4ubnVtcykge1xuICBjb25zdCBbbnVtMSwgbnVtMiwgLi4ucmVzdF0gPSBudW1zO1xuXG4gIGlmIChyZXN0Lmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gbWludXMobWludXMobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgYmFzZU51bSA9IE1hdGgucG93KDEwLCBNYXRoLm1heChkaWdpdExlbmd0aChudW0xKSwgZGlnaXRMZW5ndGgobnVtMikpKTtcbiAgcmV0dXJuICh0aW1lcyhudW0xLCBiYXNlTnVtKSAtIHRpbWVzKG51bTIsIGJhc2VOdW0pKSAvIGJhc2VOdW07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1pbnVzO1xuIiwiaW1wb3J0IHsgc3RyaXAsIGRpZ2l0TGVuZ3RoLCBmbG9hdDJGaXhlZCwgY2hlY2tCb3VuZGFyeSB9IGZyb20gJy4vdXRpbHMvbWF0aC51dGlsJztcbmltcG9ydCB0aW1lcyBmcm9tICcuL3RpbWVzJztcbmltcG9ydCB7IGlzTnVtYmVyLCBpc05hTiwgaXNTdHJpbmcgfSBmcm9tICcuL3V0aWxzL3R5cGUnO1xuXG4vKipcbiAqIOeyvuehrumZpOazle+8jOaUr+aMgeWkmuS4quaVsOebuOmZpFxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5kaXZpZGVcbiAqIEBzaW5jZSAzLjEuMFxuICogQHBhcmFtIHsuLi5udW1iZXJ8c3RyaW5nfSBudW1zIOmZpOaVsOWSjOiiq+mZpOaVsFxuICogQHJldHVybnMge251bWJlcn0g5ZWG5pWwXG4gKiBAZXhhbXBsZVxuICpcbiAqIGRpdmlkZSgxLjIxLCAxLjEpO1xuICogLy8gPT4gMS4xXG4gKlxuICogZGl2aWRlKDEwMDAsIDEwLCAxMCk7XG4gKiAvLyA9PiAxMFxuICpcbiAqIGRpdmlkZSgxMDAwLCAxMCwgMTAsIDEwKTtcbiAqIC8vID0+IDFcbiAqL1xuZnVuY3Rpb24gZGl2aWRlKC4uLm51bXMpIHtcbiAgY29uc3QgW251bTEsIG51bTIsIC4uLnJlc3RdID0gbnVtcztcblxuICBpZiAocmVzdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRpdmlkZShkaXZpZGUobnVtMSwgbnVtMiksIC4uLnJlc3QpO1xuICB9XG5cbiAgLy8g5YW85a655aSE55CG77yM5aaC5p6c56ysMuS4quWPguaVsOS4uumdnuaVsOWtl+aIluWtl+espuS4suaXtu+8jOi/lOWbnuesrOS4gOS4quWPguaVsFxuICBpZiAoKCFpc051bWJlcihudW0yKSB8fCBpc05hTihudW0yKSkgJiYgIWlzU3RyaW5nKG51bTIpKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBudW0xO1xuICB9XG5cbiAgY29uc3QgbnVtMUNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0xKTtcbiAgY29uc3QgbnVtMkNoYW5nZWQgPSBmbG9hdDJGaXhlZChudW0yKTtcbiAgY2hlY2tCb3VuZGFyeShudW0xQ2hhbmdlZCk7XG4gIGNoZWNrQm91bmRhcnkobnVtMkNoYW5nZWQpO1xuICAvLyBmaXg6IOexu+S8vCAxMCAqKiAtNCDkuLogMC4wMDAwOTk5OTk5OTk5OTk5OTk5Oe+8jHN0cmlwIOS/ruato1xuICByZXR1cm4gdGltZXMobnVtMUNoYW5nZWQgLyBudW0yQ2hhbmdlZCwgc3RyaXAoTWF0aC5wb3coMTAsIGRpZ2l0TGVuZ3RoKG51bTIpIC0gZGlnaXRMZW5ndGgobnVtMSkpKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRpdmlkZTtcbiIsImltcG9ydCBkaXZpZGUgZnJvbSAnLi9kaXZpZGUnO1xuaW1wb3J0IHRpbWVzIGZyb20gJy4vdGltZXMnO1xuXG4vKipcbiAqIOWbm+iIjeS6lOWFpe+8jOaUr+aMgeiuvue9rueyvuW6plxuICpcbiAqIEBzdGF0aWNcbiAqIEBhbGlhcyBtb2R1bGU6TWF0aC5yb3VuZFxuICogQHNpbmNlIDMuMS4wXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IG51bSDopoHlm5voiI3kupTlhaXnmoTmlbDlrZdcbiAqIEBwYXJhbSB7bnVtYmVyfSBbcHJlY2lzaW9uPTBdIOWbm+iIjeS6lOWFpeeahOeyvuW6plxuICogQHJldHVybnMge251bWJlcn0g5Zub6IiN5LqU5YWl55qE5pWw5a2XXG4gKiBAZXhhbXBsZVxuICpcbiAqIHJvdW5kKDQuMDA2KTtcbiAqIC8vID0+IDRcbiAqXG4gKiByb3VuZCg0LjAwNiwgMik7XG4gKiAvLyA9PiA0LjAxXG4gKlxuICogcm91bmQoNDA2MCwgLTIpO1xuICogLy8gPT4gNDEwMFxuICovXG5mdW5jdGlvbiByb3VuZChudW0sIHByZWNpc2lvbiA9IDApIHtcbiAgY29uc3QgYmFzZSA9IE1hdGgucG93KDEwLCBwcmVjaXNpb24pO1xuICByZXR1cm4gZGl2aWRlKE1hdGgucm91bmQodGltZXMobnVtLCBiYXNlKSksIGJhc2UpO1xufVxuXG5leHBvcnQgZGVmYXVsdCByb3VuZDtcbiIsIi8qKlxuICog562J5b6F5pe26Ze06L+U5ZueIFByb21pc2Ug44CC5bi455So5LqO5byC5q2l5pa55rOV5Lit5bu25pe244CCXG4gKlxuICogQHN0YXRpY1xuICogQGFsaWFzIG1vZHVsZTpPdGhlci53YWl0VGltZVxuICogQHNpbmNlIDQuMi4wXG4gKiBAcGFyYW0ge251bWJlcn0gW3RpbWU9MTAwMF0g5bu25pe25pe26Ze077yM5Y2V5L2N5q+r56eSXG4gKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAqIEBleGFtcGxlXG4gKiBjb25zdCB0ZXN0ID0gYXN5bmMgKCk9PntcbiAqICAgYXdhaXQgd2FpdFRpbWUoKTtcbiAqICAgLy8gZG8gc29tZXRoaW5nXG4gKiB9XG4gKlxuICogd2FpdFRpbWUoNTAwKS50aGVuKCgpPT57XG4gKiAgIC8vIGRvIHNvbWV0aGluZ1xuICogfSlcbiAqL1xuZnVuY3Rpb24gd2FpdFRpbWUodGltZSA9IDEwMDApIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgc2V0VGltZW91dChyZXNvbHZlLCB0aW1lKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdhaXRUaW1lO1xuIiwiaW1wb3J0IG5vcm1hbGl6ZVN0cmluZyBmcm9tICcuL25vcm1hbGl6ZVN0cmluZyc7XG5cbi8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2FudC1kZXNpZ24vYW50LWRlc2lnbi1tb2JpbGUvYmxvYi92Mi9jb21wb25lbnRzL2lucHV0LWl0ZW0vaW5kZXgudHN4I0wyNDBcblxuLyoqXG4gKiDorqHnrpfovpPlhaXmoYbnmoTlgLzmoLzlvI/ljJblkI7lhYnmoIfkvY3nva5cbiAqXG4gKiBAc3RhdGljXG4gKiBAYWxpYXMgbW9kdWxlOk90aGVyLmNhbGN1bGF0ZUN1cnNvclBvc2l0aW9uXG4gKiBAc2luY2UgNC42LjBcbiAqIEBzZWUg5qC85byP5YyW5omL5py65Y+356CBIHtAbGluayBodHRwczovL2RvbHktZGV2LmdpdGh1Yi5pby91dGlsLWhlbHBlcnMvbW9kdWxlLVByb2Nlc3Nvci5odG1sIy5mb3JtYXRNb2JpbGV8Zm9ybWF0TW9iaWxlfVxuICogQHNlZSDmoLzlvI/ljJbpk7booYzljaHlj7cge0BsaW5rIGh0dHBzOi8vZG9seS1kZXYuZ2l0aHViLmlvL3V0aWwtaGVscGVycy9tb2R1bGUtUHJvY2Vzc29yLmh0bWwjLmZvcm1hdEJhbmtDYXJkfGZvcm1hdEJhbmtDYXJkfVxuICogQHNlZSDnpLrkvosge0BsaW5rIGh0dHBzOi8vMjk1MHY5LmNzYi5hcHAvfOeCueWHu+afpeeci31cbiAqIEBwYXJhbSB7bnVtYmVyfSBwcmV2UG9zIOi1i+WAvOWJjeeahOWFieagh+S9jee9ru+8jG9uQ2hhbmdlL29uSW5wdXTnmoTlhYnmoIfkvY3nva4gZS50YXJnZXQuc2VsZWN0aW9uRW5kXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJldkN0cmxWYWx1ZSDkuIrkuIDkuKrmoLzlvI/ljJblkI7nmoTlgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdWYWx1ZSDlvZPliY3ovpPlhaXljp/lgLxcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdHJsVmFsdWUg5b2T5YmN5qC85byP5YyW5ZCO55qE5YC8XG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnNdIOmFjee9rumhuVxuICogQHBhcmFtIHtzdHJpbmdbXXxzdHJpbmd9IFtvcHRpb25zLnBsYWNlaG9sZGVyQ2hhcj0nICddIOWNoOS9jeesplxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLm1hc2tSZWc9L1xcRC9nXSDpnIDopoHpga7nm5bnmoTlrZfnrKbop4TliJnjgILpu5jorqTljrvmjonpnZ7mlbDlrZfvvIzmhI/lkbPnnYAgY3RybFZhbHVlIOmcgOimgeWOu+aOiemdnuaVsOWtl+OAglxuICogQHBhcmFtIHsnbW9iaWxlJ3wnYmFua0NhcmQnfSBbb3B0aW9ucy50eXBlXSDmoLzlvI/ljJbnsbvlnovvvIzlhoXnva7miYvmnLrlj7fnoIHlkozpk7booYzljaHlj7fnibnmrorlpITnkIZcbiAqIEByZXR1cm5zIHtudW1iZXJ9IOagvOW8j+WMluWQjueahOWFieagh+S9jee9rlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVDdXJzb3JQb3NpdGlvbihwcmV2UG9zLCBwcmV2Q3RybFZhbHVlLCByYXdWYWx1ZSwgY3RybFZhbHVlLCB7IHBsYWNlaG9sZGVyQ2hhciA9ICcgJywgbWFza1JlZyA9IC9cXEQvZywgdHlwZSB9ID0ge30pIHtcbiAgY29uc3QgcmVhbEN0cmxWYWx1ZSA9IG5vcm1hbGl6ZVN0cmluZyhwcmV2Q3RybFZhbHVlKTtcbiAgY29uc3QgcmVhbFJhd1ZhbHVlID0gbm9ybWFsaXplU3RyaW5nKHJhd1ZhbHVlKTtcbiAgY29uc3QgcGxhY2Vob2xkZXJDaGFycyA9IEFycmF5LmlzQXJyYXkocGxhY2Vob2xkZXJDaGFyKSA/IHBsYWNlaG9sZGVyQ2hhciA6IFtwbGFjZWhvbGRlckNoYXJdO1xuXG4gIGNvbnN0IGVkaXRMZW5ndGggPSByZWFsUmF3VmFsdWUubGVuZ3RoIC0gcmVhbEN0cmxWYWx1ZS5sZW5ndGg7XG4gIGNvbnN0IGlzQWRkaXRpb24gPSBlZGl0TGVuZ3RoID4gMDtcblxuICBsZXQgcG9zID0gcHJldlBvcztcblxuICBpZiAoaXNBZGRpdGlvbikge1xuICAgIGNvbnN0IGFkZGl0aW9uU3RyID0gcmVhbFJhd1ZhbHVlLnN1YnN0cmluZyhwb3MgLSBlZGl0TGVuZ3RoLCBwb3MpO1xuICAgIGxldCBjdHJsQ2hhckNvdW50ID0gYWRkaXRpb25TdHIucmVwbGFjZShtYXNrUmVnLCAnJykubGVuZ3RoO1xuICAgIHBvcyAtPSBlZGl0TGVuZ3RoIC0gY3RybENoYXJDb3VudDtcblxuICAgIGxldCBwbGFjZWhvbGRlckNoYXJDb3VudCA9IDA7XG4gICAgd2hpbGUgKGN0cmxDaGFyQ291bnQgPiAwKSB7XG4gICAgICBpZiAocGxhY2Vob2xkZXJDaGFycy5pbmRleE9mKGN0cmxWYWx1ZS5jaGFyQXQocG9zIC0gY3RybENoYXJDb3VudCArIHBsYWNlaG9sZGVyQ2hhckNvdW50KSkgIT09IC0xKSB7XG4gICAgICAgIHBsYWNlaG9sZGVyQ2hhckNvdW50Kys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHJsQ2hhckNvdW50LS07XG4gICAgICB9XG4gICAgfVxuICAgIHBvcyArPSBwbGFjZWhvbGRlckNoYXJDb3VudDtcbiAgfVxuXG4gIGlmICgodHlwZSA9PT0gJ21vYmlsZScgJiYgKHBvcyA9PT0gNCB8fCBwb3MgPT09IDkpKSB8fCAodHlwZSA9PT0gJ2JhbmtDYXJkJyAmJiBwb3MgPiAwICYmIHBvcyAlIDUgPT09IDApKSB7XG4gICAgcG9zIC09IDE7XG4gIH1cblxuICByZXR1cm4gcG9zO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjYWxjdWxhdGVDdXJzb3JQb3NpdGlvbjtcbiJdLCJuYW1lcyI6WyJyZWciLCJyZWdJZENhcmQiLCJiYXNlUmVnIiwic3VtQ2hlY2tDb2RlIiwiaXNOYU4iXSwibWFwcGluZ3MiOiI7Ozs7OztFQUFBLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO0FBQzNDO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRTtFQUNqQyxFQUFFLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDekQ7O0VDWEE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUU7RUFDekIsRUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7RUFDakM7O0VDbEJBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsZUFBZSxDQUFDLEtBQUssRUFBRTtFQUNoQyxFQUFFLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7RUFDakQ7O0VDUkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsbUJBQW1CLENBQUM7QUFDaEM7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFO0VBQ3pCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUN2QkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsMkNBQTJDLENBQUM7QUFDeEQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxXQUFXLENBQUMsS0FBSyxFQUFFO0VBQzVCLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsT0FBT0EsS0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztFQUM1Qjs7RUM3QkE7RUFDQSxNQUFNQSxLQUFHLEdBQUcsU0FBUyxDQUFDO0FBQ3RCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRTtFQUMzQixFQUFFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztFQUMxQyxFQUFFLE9BQU9BLEtBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7RUFDNUI7O0VDdkJBO0VBQ0EsTUFBTUMsV0FBUyxHQUFHLHFGQUFxRixDQUFDO0FBQ3hHO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxLQUFLLENBQUMsRUFBRSxFQUFFO0VBQ25CLEVBQUUsSUFBSSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztFQUN0QixFQUFFLEtBQUssR0FBRyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRTtFQUM3QyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0VBQzlELEdBQUc7RUFDSCxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0VBQy9CLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxFQUFFO0VBQ2hCLElBQUksT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ2xDLEdBQUcsTUFBTTtFQUNULElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO0VBQ3pCLEdBQUc7RUFDSCxDQUFDO0FBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxHQUFHLEtBQUssRUFBRSxTQUFTLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ25FLEVBQUUsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0VBQzFDLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUU7RUFDdkMsSUFBSSxPQUFPQSxXQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0VBQ3BDLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSUEsV0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtFQUMxRCxJQUFJLElBQUksU0FBUyxFQUFFO0VBQ25CLE1BQU0sT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLENB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R0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0VBQ2xGOztFQ3hDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFNBQVMsV0FBVyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUU7RUFDMUYsRUFBRSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQzVCO0VBQ0E7RUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLEVBQUU7RUFDakMsSUFBSSxPQUFPLEdBQUcsQ0FBQztFQUNmLEdBQUc7QUFDSDtFQUNBLEVBQUUsS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUM7RUFDOUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztBQUN0QztFQUNBO0VBQ0EsRUFBRSxJQUFJLEtBQUssSUFBSSxHQUFHLEVBQUU7RUFDcEIsSUFBSSxPQUFPLEdBQUcsQ0FBQztFQUNmLEdBQUc7QUFDSDtFQUNBLEVBQUUsSUFBSSxTQUFTLEdBQUcsR0FBRyxD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LFVBQVUsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztFQUNqRzs7RUN0UEE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUU7RUFDNUIsRUFBRSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7RUFDaEMsRUFBRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7RUFDakI7RUFDQSxFQUFFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN0RSxFQUFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7RUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztFQUM5Rjs7RUM1QkEsTUFBTSxTQUFTLEdBQUcsa0lBQWtJLENBQUM7QUFDcko7RUFDQSxNQUFNLFNBQVMsR0FBRztFQUNsQjtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7QUFDbEI7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztBQUNoQjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0FBQ2Y7RUFDQTtFQUNBLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO0VBQ2YsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFDbkIsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7QUFDZjtFQUNBO0VBQ0EsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7RUFDZixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztFQUNmLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxD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QU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7RUFDOUQ7O0VDdEJBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxFQUFFO0VBQ2xDLEVBQUUsTUFBTSxTQUFTLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN0RjtFQUNBLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7RUFDL0I7RUFDQSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7RUFDeEMsR0FBRztBQUNIO0VBQ0E7RUFDQSxFQUFFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7RUFDN0Q7O0VDaENBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO0VBQ3JELEVBQUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0VBQ3hDLEVBQUUsTUFBTSxTQUFTLEdBQUcsZUFBZSxDQUFDLFFBQVEs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
2648
+ //# sourceMappingURL=util-helpers.js.map