w-converhp 2.0.38 → 2.0.39
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 +1 -1
- package/dist/w-converhp-client.umd.js +1 -1
- package/dist/w-converhp-server.umd.js +2 -2
- package/dist/w-converhp-server.umd.js.map +1 -1
- package/docs/WConverhpClient.html +1 -1
- package/docs/WConverhpClient.mjs.html +1 -1
- package/docs/WConverhpServer.html +1 -1
- package/docs/WConverhpServer.mjs.html +1 -1
- package/docs/index.html +1 -1
- package/package.json +1 -1
- package/src/checkTotalHash.mjs +12 -2
- package/src/checkTotalHash.wk.umd.js +1 -1
|
@@ -529,7 +529,7 @@
|
|
|
529
529
|
<br class="clear">
|
|
530
530
|
|
|
531
531
|
<footer>
|
|
532
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025
|
|
532
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
533
533
|
</footer>
|
|
534
534
|
|
|
535
535
|
<script>prettyPrint();</script>
|
|
@@ -1094,7 +1094,7 @@ export default WConverhpClient
|
|
|
1094
1094
|
<br class="clear">
|
|
1095
1095
|
|
|
1096
1096
|
<footer>
|
|
1097
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025
|
|
1097
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1098
1098
|
</footer>
|
|
1099
1099
|
|
|
1100
1100
|
<script>prettyPrint();</script>
|
|
@@ -789,7 +789,7 @@
|
|
|
789
789
|
<br class="clear">
|
|
790
790
|
|
|
791
791
|
<footer>
|
|
792
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025
|
|
792
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
793
793
|
</footer>
|
|
794
794
|
|
|
795
795
|
<script>prettyPrint();</script>
|
|
@@ -1477,7 +1477,7 @@ export default WConverhpServer
|
|
|
1477
1477
|
<br class="clear">
|
|
1478
1478
|
|
|
1479
1479
|
<footer>
|
|
1480
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025
|
|
1480
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1481
1481
|
</footer>
|
|
1482
1482
|
|
|
1483
1483
|
<script>prettyPrint();</script>
|
package/docs/index.html
CHANGED
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
<br class="clear">
|
|
72
72
|
|
|
73
73
|
<footer>
|
|
74
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Tue Apr 15 2025 16:07:51 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|
package/package.json
CHANGED
package/src/checkTotalHash.mjs
CHANGED
|
@@ -2,7 +2,11 @@ import path from 'path'
|
|
|
2
2
|
import fs from 'fs'
|
|
3
3
|
import each from 'lodash-es/each.js'
|
|
4
4
|
import size from 'lodash-es/size.js'
|
|
5
|
+
import last from 'lodash-es/last.js'
|
|
6
|
+
import sep from 'wsemi/src/sep.mjs'
|
|
5
7
|
import isnum from 'wsemi/src/isnum.mjs'
|
|
8
|
+
import isp0int from 'wsemi/src/isp0int.mjs'
|
|
9
|
+
import cint from 'wsemi/src/cint.mjs'
|
|
6
10
|
import fsIsFile from 'wsemi/src/fsIsFile.mjs'
|
|
7
11
|
import fsGetFilesInFolder from 'wsemi/src/fsGetFilesInFolder.mjs'
|
|
8
12
|
import fsGetFileXxHash from 'wsemi/src/fsGetFileXxHash.mjs'
|
|
@@ -74,13 +78,19 @@ let checkTotalHash = async (fileSize, sizeSlice, fileHash, pathUploadTemp) => {
|
|
|
74
78
|
//slks
|
|
75
79
|
let slks = []
|
|
76
80
|
if (true) {
|
|
77
|
-
each(vfps, (v
|
|
81
|
+
each(vfps, (v) => {
|
|
78
82
|
let b1 = (v.name).indexOf(`${fileHash}_`) >= 0
|
|
79
83
|
let stats = fs.statSync(v.path)
|
|
80
84
|
let b2 = stats.size === sizeSlice
|
|
81
85
|
let b = b1 && b2
|
|
82
86
|
if (b) {
|
|
83
|
-
|
|
87
|
+
let s = sep(v.name, `${fileHash}_`)
|
|
88
|
+
let i = last(s)
|
|
89
|
+
if (!isp0int(i)) {
|
|
90
|
+
throw new Error(`can not parse index in v.name[${v.name}]`)
|
|
91
|
+
}
|
|
92
|
+
i = cint(i)
|
|
93
|
+
slks.push(i)
|
|
84
94
|
}
|
|
85
95
|
})
|
|
86
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(M,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],s):(M="undefined"!=typeof globalThis?globalThis:M||self).checkTotalHash=s(M.worker_threads)}(this,(function(M){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var s={};!function(s,w){s.exports=function(M){var s={};!function(M){var s=Object.prototype.hasOwnProperty,w="~";function L(){}function I(M,s,w){this.fn=M,this.context=s,this.once=w||!1}function D(M,s,L,D,y){if("function"!=typeof L)throw new TypeError("The listener must be a function");var i=new I(L,D||M,y),d=w?w+s:s;return M._events[d]?M._events[d].fn?M._events[d]=[M._events[d],i]:M._events[d].push(i):(M._events[d]=i,M._eventsCount++),M}function y(M,s){0==--M._eventsCount?M._events=new L:delete M._events[s]}function i(){this._events=new L,this._eventsCount=0}Object.create&&(L.prototype=Object.create(null),(new L).__proto__||(w=!1)),i.prototype.eventNames=function(){var M,L,I=[];if(0===this._eventsCount)return I;for(L in M=this._events)s.call(M,L)&&I.push(w?L.slice(1):L);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(M)):I},i.prototype.listeners=function(M){var s=w?w+M:M,L=this._events[s];if(!L)return[];if(L.fn)return[L.fn];for(var I=0,D=L.length,y=new Array(D);I<D;I++)y[I]=L[I].fn;return y},i.prototype.listenerCount=function(M){var s=w?w+M:M,L=this._events[s];return L?L.fn?1:L.length:0},i.prototype.emit=function(M,s,L,I,D,y){var i=w?w+M:M;if(!this._events[i])return!1;var d,l,c=this._events[i],C=arguments.length;if(c.fn){switch(c.once&&this.removeListener(M,c.fn,void 0,!0),C){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,s),!0;case 3:return c.fn.call(c.context,s,L),!0;case 4:return c.fn.call(c.context,s,L,I),!0;case 5:return c.fn.call(c.context,s,L,I,D),!0;case 6:return c.fn.call(c.context,s,L,I,D,y),!0}for(l=1,d=new Array(C-1);l<C;l++)d[l-1]=arguments[l];c.fn.apply(c.context,d)}else{var Z,N=c.length;for(l=0;l<N;l++)switch(c[l].once&&this.removeListener(M,c[l].fn,void 0,!0),C){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,s);break;case 3:c[l].fn.call(c[l].context,s,L);break;case 4:c[l].fn.call(c[l].context,s,L,I);break;default:if(!d)for(Z=1,d=new Array(C-1);Z<C;Z++)d[Z-1]=arguments[Z];c[l].fn.apply(c[l].context,d)}}return!0},i.prototype.on=function(M,s,w){return D(this,M,s,w,!1)},i.prototype.once=function(M,s,w){return D(this,M,s,w,!0)},i.prototype.removeListener=function(M,s,L,I){var D=w?w+M:M;if(!this._events[D])return this;if(!s)return y(this,D),this;var i=this._events[D];if(i.fn)i.fn!==s||I&&!i.once||L&&i.context!==L||y(this,D);else{for(var d=0,l=[],c=i.length;d<c;d++)(i[d].fn!==s||I&&!i[d].once||L&&i[d].context!==L)&&l.push(i[d]);l.length?this._events[D]=1===l.length?l[0]:l:y(this,D)}return this},i.prototype.removeAllListeners=function(M){var s;return M?(s=w?w+M:M,this._events[s]&&y(this,s)):(this._events=new L,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=w,i.EventEmitter=i,M.exports=i}({get exports(){return s},set exports(M){s=M}});var w=s;let L;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=(I="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB5PSJbb2JqZWN0IE51bGxdIixiPSJbb2JqZWN0IFVuZGVmaW5lZF0iLHY9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/Yjp5OnYmJnYgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksTz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLHc9XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIU8uY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxQPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRT05MDA3MTk5MjU0NzQwOTkxLGs9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uIEYodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmay50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyICQ9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD0kfXZhciBUPXt9O1RbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVRbIltvYmplY3QgSW50OEFycmF5XSJdPVRbIltvYmplY3QgSW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IEludDMyQXJyYXldIl09VFsiW29iamVjdCBVaW50OEFycmF5XSJdPVRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLFRbIltvYmplY3QgQXJndW1lbnRzXSJdPVRbIltvYmplY3QgQXJyYXldIl09VFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1UWyJbb2JqZWN0IEJvb2xlYW5dIl09VFsiW29iamVjdCBEYXRhVmlld10iXT1UWyJbb2JqZWN0IERhdGVdIl09VFsiW29iamVjdCBFcnJvcl0iXT1UWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPVRbIltvYmplY3QgTWFwXSJdPVRbIltvYmplY3QgTnVtYmVyXSJdPVRbIltvYmplY3QgT2JqZWN0XSJdPVRbIltvYmplY3QgUmVnRXhwXSJdPVRbIltvYmplY3QgU2V0XSJdPVRbIltvYmplY3QgU3RyaW5nXSJdPVRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgRCxJPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsTT1JJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsTj1NJiZNLmV4cG9ydHM9PT1JJiZ1LnByb2Nlc3MsVT1mdW5jdGlvbigpe3RyeXt2YXIgdD1NJiZNLnJlcXVpcmUmJk0ucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxOJiZOLmJpbmRpbmcmJk4uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksUj1VJiZVLmlzVHlwZWRBcnJheSxCPVI/KEQ9UixmdW5jdGlvbih0KXtyZXR1cm4gRCh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFUW2QodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmdyh0KSxvPSFyJiYhbiYmUCh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8RihmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx5dD1PYmplY3QucHJvdG90eXBlLGJ0PWh0LnRvU3RyaW5nLHZ0PXl0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIrYnQuY2FsbCh2dCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksT3Q9X3QoYSwiUHJvbWlzZSIpLHd0PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsUHQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsa3Q9bHQoanQpLEZ0PWx0KG10KSwkdD1sdChPdCksTHQ9bHQod3QpLFR0PWx0KFN0KSxEdD1kOyhqdCYmRHQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8bXQmJkR0KG5ldyBtdCkhPUF0fHxPdCYmRHQoT3QucmVzb2x2ZSgpKSE9eHR8fHd0JiZEdChuZXcgd3QpIT16dHx8U3QmJkR0KG5ldyBTdCkhPVB0KSYmKER0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBrdDpyZXR1cm4gRXQ7Y2FzZSBGdDpyZXR1cm4gQXQ7Y2FzZSAkdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBUdDpyZXR1cm4gUHR9cmV0dXJuIGV9KTt2YXIgSXQ9RHQsTXQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gTnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgVXQ9TnQoImxlbmd0aCIpLFJ0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTt2YXIgQnQ9IlxcdWQ4MDAtXFx1ZGZmZiIsQ3Q9IlsiK0J0KyJdIixXdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLHF0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLFZ0PSJbXiIrQnQrIl0iLEd0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixIdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsSnQ9Iig/OiIrV3QrInwiK3F0KyIpIisiPyIsS3Q9IltcXHVmZTBlXFx1ZmUwZl0/IixRdD1LdCtKdCsoIig/OlxcdTIwMGQoPzoiK1tWdCxHdCxIdF0uam9pbigifCIpKyIpIitLdCtKdCsiKSoiKSxYdD0iKD86IitbVnQrV3QrIj8iLFd0LEd0LEh0LEN0XS5qb2luKCJ8IikrIikiLFl0PVJlZ0V4cChxdCsiKD89IitxdCsiKXwiK1h0K1F0LCJnIik7ZnVuY3Rpb24gWnQodCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBSdC50ZXN0KHQpfSh0KT9mdW5jdGlvbih0KXtmb3IodmFyIGU9WXQubGFzdEluZGV4PTA7WXQudGVzdCh0KTspKytlO3JldHVybiBlfSh0KTpVdCh0KX1mdW5jdGlvbiB0ZSh0KXtpZihudWxsPT10KXJldHVybiAwO2lmKGV0KHQpKXJldHVybiJzdHJpbmciPT10eXBlb2YoZT10KXx8IVMoZSkmJmcoZSkmJmQoZSk9PU10P1p0KHQpOnQubGVuZ3RoO3ZhciBlLHI9SXQodCk7cmV0dXJuIltvYmplY3QgTWFwXSI9PXJ8fCJbb2JqZWN0IFNldF0iPT1yP3Quc2l6ZTpKKHQpLmxlbmd0aH1mdW5jdGlvbiBlZSh0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gcmUodCl7bGV0IGU9ITE7aWYoZWUodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIG5lPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG9lKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09bmV9dmFyIHVlPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLGllPS9eXHcqJC87ZnVuY3Rpb24gYWUodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFvZSh0KSl8fChpZS50ZXN0KHQpfHwhdWUudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBjZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBzZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGxlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHBlKHQsZSl7cmV0dXJuIHQ9PT1lfHx0IT10JiZlIT1lfWZ1bmN0aW9uIGhlKHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoO3ItLTspaWYocGUodFtyXVswXSxlKSlyZXR1cm4gcjtyZXR1cm4tMX1sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWNlP2NlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxsZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxsZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoY2Upe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gZmUuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxsZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGNlP3ZvaWQgMCE9PWVbdF06c2UuY2FsbChlLHQpfSxsZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1jZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfTt2YXIgeWU9QXJyYXkucHJvdG90eXBlLnNwbGljZTtmdW5jdGlvbiBiZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1mdW5jdGlvbiB2ZSh0LGUpe3ZhciByLG4sbz10Ll9fZGF0YV9fO3JldHVybigic3RyaW5nIj09KG49dHlwZW9mKHI9ZSkpfHwibnVtYmVyIj09bnx8InN5bWJvbCI9PW58fCJib29sZWFuIj09bj8iX19wcm90b19fIiE9PXI6bnVsbD09PXIpP29bInN0cmluZyI9PXR5cGVvZiBlPyJzdHJpbmciOiJoYXNoIl06by5tYXB9ZnVuY3Rpb24gZGUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19YmUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0sYmUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9aGUoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6eWUuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxiZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1oZShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LGJlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGhlKHRoaXMuX19kYXRhX18sdCk+LTF9LGJlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49aGUocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc30sZGUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgbGUsbWFwOm5ldyhtdHx8YmUpLHN0cmluZzpuZXcgbGV9fSxkZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXZlKHRoaXMsdCkuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LGRlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHZlKHRoaXMsdCkuZ2V0KHQpfSxkZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB2ZSh0aGlzLHQpLmhhcyh0KX0sZGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXZlKHRoaXMsdCksbj1yLnNpemU7cmV0dXJuIHIuc2V0KHQsZSksdGhpcy5zaXplKz1yLnNpemU9PW4/MDoxLHRoaXN9O3ZhciBnZT0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gX2UodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihnZSk7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KF9lLkNhY2hlfHxkZSkscn1fZS5DYWNoZT1kZTt2YXIgamU9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csbWU9L1xcKFxcKT8vZyxPZT1mdW5jdGlvbih0KXt2YXIgZT1fZSh0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGplLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2UobWUsIiQxIik6cnx8dCl9KSksZX0pKSx3ZT1PZTtmdW5jdGlvbiBTZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPUFycmF5KG4pOysrcjxuOylvW3JdPWUodFtyXSxyLHQpO3JldHVybiBvfXZhciBBZT0xLzAseGU9Yz9jLnByb3RvdHlwZTp2b2lkIDAsemU9eGU/eGUudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIFBlKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiBTZSh0LFBlKSsiIjtpZihvZSh0KSlyZXR1cm4gemU/emUuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0tQWU/Ii0wIjplfWZ1bmN0aW9uIEVlKHQsZSl7cmV0dXJuIFModCk/dDphZSh0LGUpP1t0XTp3ZShmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjpQZSh0KX0odCkpfXZhciBrZT0xLzA7ZnVuY3Rpb24gRmUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0fHxvZSh0KSlyZXR1cm4gdDt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0ta2U/Ii0wIjplfWZ1bmN0aW9uICRlKHQsZSl7Zm9yKHZhciByPTAsbj0oZT1FZShlLHQpKS5sZW5ndGg7bnVsbCE9dCYmcjxuOyl0PXRbRmUoZVtyKytdKV07cmV0dXJuIHImJnI9PW4/dDp2b2lkIDB9ZnVuY3Rpb24gTGUodCxlLHIpe3ZhciBuPW51bGw9PXQ/dm9pZCAwOiRlKHQsZSk7cmV0dXJuIHZvaWQgMD09PW4/cjpufWZ1bmN0aW9uIFRlKHQsZT17fSl7bGV0IHI9TGUoZSwiZnMiKTtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gRGUodCl7cmV0dXJuIFRlKHQse2ZzOmV9KX1mdW5jdGlvbiBJZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9ZnVuY3Rpb24gTWUodCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBOZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBiZSh0KTt0aGlzLnNpemU9ZS5zaXplfU5lLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IGJlLHRoaXMuc2l6ZT0wfSxOZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxyfSxOZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0sTmUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LE5lLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBiZSl7dmFyIG49ci5fX2RhdGFfXztpZighbXR8fG4ubGVuZ3RoPDE5OSlyZXR1cm4gbi5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IGRlKG4pfXJldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc307ZnVuY3Rpb24gVWUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IGRlOysrZTxyOyl0aGlzLmFkZCh0W2VdKX1mdW5jdGlvbiBSZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bjspaWYoZSh0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9VWUucHJvdG90eXBlLmFkZD1VZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LFVlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTt2YXIgQmU9MSxDZT0yO2Z1bmN0aW9uIFdlKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkJlLGE9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZihhIT1jJiYhKGkmJmM+YSkpcmV0dXJuITE7dmFyIGY9dS5nZXQodCkscz11LmdldChlKTtpZihmJiZzKXJldHVybiBmPT1lJiZzPT10O3ZhciBsPS0xLHA9ITAsaD1yJkNlP25ldyBVZTp2b2lkIDA7Zm9yKHUuc2V0KHQsZSksdS5zZXQoZSx0KTsrK2w8YTspe3ZhciB5PXRbbF0sYj1lW2xdO2lmKG4pdmFyIHY9aT9uKGIseSxsLGUsdCx1KTpuKHksYixsLHQsZSx1KTtpZih2b2lkIDAhPT12KXtpZih2KWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoaCl7aWYoIVJlKGUsKGZ1bmN0aW9uKHQsZSl7aWYoaT1lLCFoLmhhcyhpKSYmKHk9PT10fHxvKHksdCxyLG4sdSkpKXJldHVybiBoLnB1c2goZSk7dmFyIGl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYoeSE9PWImJiFvKHksYixyLG4sdSkpe3A9ITE7YnJlYWt9fXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfXZhciBxZT1hLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gVmUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7clsrK2VdPVtuLHRdfSkpLHJ9ZnVuY3Rpb24gR2UodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbKytlXT10fSkpLHJ9dmFyIEhlPTEsSmU9MixLZT0iW29iamVjdCBCb29sZWFuXSIsUWU9IltvYmplY3QgRGF0ZV0iLFhlPSJbb2JqZWN0IEVycm9yXSIsWWU9IltvYmplY3QgTWFwXSIsWmU9IltvYmplY3QgTnVtYmVyXSIsdHI9IltvYmplY3QgUmVnRXhwXSIsZXI9IltvYmplY3QgU2V0XSIscnI9IltvYmplY3QgU3RyaW5nXSIsbnI9IltvYmplY3QgU3ltYm9sXSIsb3I9IltvYmplY3QgQXJyYXlCdWZmZXJdIix1cj0iW29iamVjdCBEYXRhVmlld10iLGlyPWM/Yy5wcm90b3R5cGU6dm9pZCAwLGFyPWlyP2lyLnZhbHVlT2Y6dm9pZCAwO3ZhciBjcj1PYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLGZyPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsc3I9ZnI/ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/W106KHQ9T2JqZWN0KHQpLEllKGZyKHQpLChmdW5jdGlvbihlKXtyZXR1cm4gY3IuY2FsbCh0LGUpfSkpKX06ZnVuY3Rpb24oKXtyZXR1cm5bXX07ZnVuY3Rpb24gbHIodCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1lKHQpO3JldHVybiBTKHQpP246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj1lLmxlbmd0aCxvPXQubGVuZ3RoOysrcjxuOyl0W28rcl09ZVtyXTtyZXR1cm4gdH0obixyKHQpKX0odCxydCxzcil9dmFyIHByPTEsaHI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTt2YXIgeXI9MSxicj0iW29iamVjdCBBcmd1bWVudHNdIix2cj0iW29iamVjdCBBcnJheV0iLGRyPSJbb2JqZWN0IE9iamVjdF0iLGdyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gX3IodCxlLHIsbixvLHUpe3ZhciBpPVModCksYT1TKGUpLGM9aT92cjpJdCh0KSxmPWE/dnI6SXQoZSkscz0oYz1jPT1icj9kcjpjKT09ZHIsbD0oZj1mPT1icj9kcjpmKT09ZHIscD1jPT1mO2lmKHAmJlAodCkpe2lmKCFQKGUpKXJldHVybiExO2k9ITAscz0hMX1pZihwJiYhcylyZXR1cm4gdXx8KHU9bmV3IE5lKSxpfHxCKHQpP1dlKHQsZSxyLG4sbyx1KTpmdW5jdGlvbih0LGUscixuLG8sdSxpKXtzd2l0Y2gocil7Y2FzZSB1cjppZih0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8dC5ieXRlT2Zmc2V0IT1lLmJ5dGVPZmZzZXQpcmV0dXJuITE7dD10LmJ1ZmZlcixlPWUuYnVmZmVyO2Nhc2Ugb3I6cmV0dXJuISh0LmJ5dGVMZW5ndGghPWUuYnl0ZUxlbmd0aHx8IXUobmV3IHFlKHQpLG5ldyBxZShlKSkpO2Nhc2UgS2U6Y2FzZSBRZTpjYXNlIFplOnJldHVybiBwZSgrdCwrZSk7Y2FzZSBYZTpyZXR1cm4gdC5uYW1lPT1lLm5hbWUmJnQubWVzc2FnZT09ZS5tZXNzYWdlO2Nhc2UgdHI6Y2FzZSBycjpyZXR1cm4gdD09ZSsiIjtjYXNlIFllOnZhciBhPVZlO2Nhc2UgZXI6dmFyIGM9biZIZTtpZihhfHwoYT1HZSksdC5zaXplIT1lLnNpemUmJiFjKXJldHVybiExO3ZhciBmPWkuZ2V0KHQpO2lmKGYpcmV0dXJuIGY9PWU7bnw9SmUsaS5zZXQodCxlKTt2YXIgcz1XZShhKHQpLGEoZSksbixvLHUsaSk7cmV0dXJuIGkuZGVsZXRlKHQpLHM7Y2FzZSBucjppZihhcilyZXR1cm4gYXIuY2FsbCh0KT09YXIuY2FsbChlKX1yZXR1cm4hMX0odCxlLGMscixuLG8sdSk7aWYoIShyJnlyKSl7dmFyIGg9cyYmZ3IuY2FsbCh0LCJfX3dyYXBwZWRfXyIpLHk9bCYmZ3IuY2FsbChlLCJfX3dyYXBwZWRfXyIpO2lmKGh8fHkpe3ZhciBiPWg/dC52YWx1ZSgpOnQsdj15P2UudmFsdWUoKTplO3JldHVybiB1fHwodT1uZXcgTmUpLG8oYix2LHIsbix1KX19cmV0dXJuISFwJiYodXx8KHU9bmV3IE5lKSxmdW5jdGlvbih0LGUscixuLG8sdSl7dmFyIGk9ciZwcixhPWxyKHQpLGM9YS5sZW5ndGg7aWYoYyE9bHIoZSkubGVuZ3RoJiYhaSlyZXR1cm4hMTtmb3IodmFyIGY9YztmLS07KXt2YXIgcz1hW2ZdO2lmKCEoaT9zIGluIGU6aHIuY2FsbChlLHMpKSlyZXR1cm4hMX12YXIgbD11LmdldCh0KSxwPXUuZ2V0KGUpO2lmKGwmJnApcmV0dXJuIGw9PWUmJnA9PXQ7dmFyIGg9ITA7dS5zZXQodCxlKSx1LnNldChlLHQpO2Zvcih2YXIgeT1pOysrZjxjOyl7dmFyIGI9dFtzPWFbZl1dLHY9ZVtzXTtpZihuKXZhciBkPWk/bih2LGIscyxlLHQsdSk6bihiLHYscyx0LGUsdSk7aWYoISh2b2lkIDA9PT1kP2I9PT12fHxvKGIsdixyLG4sdSk6ZCkpe2g9ITE7YnJlYWt9eXx8KHk9ImNvbnN0cnVjdG9yIj09cyl9aWYoaCYmIXkpe3ZhciBnPXQuY29uc3RydWN0b3IsXz1lLmNvbnN0cnVjdG9yO2c9PV98fCEoImNvbnN0cnVjdG9yImluIHQpfHwhKCJjb25zdHJ1Y3RvciJpbiBlKXx8ImZ1bmN0aW9uIj09dHlwZW9mIGcmJmcgaW5zdGFuY2VvZiBnJiYiZnVuY3Rpb24iPT10eXBlb2YgXyYmXyBpbnN0YW5jZW9mIF98fChoPSExKX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSksaH0odCxlLHIsbixvLHUpKX1mdW5jdGlvbiBqcih0LGUscixuLG8pe3JldHVybiB0PT09ZXx8KG51bGw9PXR8fG51bGw9PWV8fCFnKHQpJiYhZyhlKT90IT10JiZlIT1lOl9yKHQsZSxyLG4sanIsbykpfXZhciBtcj0xLE9yPTI7ZnVuY3Rpb24gd3IodCl7cmV0dXJuIHQ9PXQmJiFLKHQpfWZ1bmN0aW9uIFNyKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBudWxsIT1yJiYoclt0XT09PWUmJih2b2lkIDAhPT1lfHx0IGluIE9iamVjdChyKSkpfX1mdW5jdGlvbiBBcih0KXt2YXIgZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9cnQodCkscj1lLmxlbmd0aDtyLS07KXt2YXIgbj1lW3JdLG89dFtuXTtlW3JdPVtuLG8sd3IobyldfXJldHVybiBlfSh0KTtyZXR1cm4gMT09ZS5sZW5ndGgmJmVbMF1bMl0/U3IoZVswXVswXSxlWzBdWzFdKTpmdW5jdGlvbihyKXtyZXR1cm4gcj09PXR8fGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBvPXIubGVuZ3RoLHU9byxpPSFuO2lmKG51bGw9PXQpcmV0dXJuIXU7Zm9yKHQ9T2JqZWN0KHQpO28tLTspe3ZhciBhPXJbb107aWYoaSYmYVsyXT9hWzFdIT09dFthWzBdXTohKGFbMF1pbiB0KSlyZXR1cm4hMX1mb3IoOysrbzx1Oyl7dmFyIGM9KGE9cltvXSlbMF0sZj10W2NdLHM9YVsxXTtpZihpJiZhWzJdKXtpZih2b2lkIDA9PT1mJiYhKGMgaW4gdCkpcmV0dXJuITF9ZWxzZXt2YXIgbD1uZXcgTmU7aWYobil2YXIgcD1uKGYscyxjLHQsZSxsKTtpZighKHZvaWQgMD09PXA/anIocyxmLG1yfE9yLG4sbCk6cCkpcmV0dXJuITF9fXJldHVybiEwfShyLHQsZSl9fWZ1bmN0aW9uIHhyKHQsZSl7cmV0dXJuIG51bGwhPXQmJmUgaW4gT2JqZWN0KHQpfWZ1bmN0aW9uIHpyKHQsZSl7cmV0dXJuIG51bGwhPXQmJmZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49LTEsbz0oZT1FZShlLHQpKS5sZW5ndGgsdT0hMTsrK248bzspe3ZhciBpPUZlKGVbbl0pO2lmKCEodT1udWxsIT10JiZyKHQsaSkpKWJyZWFrO3Q9dFtpXX1yZXR1cm4gdXx8KytuIT1vP3U6ISEobz1udWxsPT10PzA6dC5sZW5ndGgpJiZMKG8pJiZGKGksbykmJihTKHQpfHx3KHQpKX0odCxlLHhyKX12YXIgUHI9MSxFcj0yO2Z1bmN0aW9uIGtyKHQpe3JldHVybiBhZSh0KT9OdChGZSh0KSk6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiAkZShlLHQpfX0odCl9ZnVuY3Rpb24gRnIodCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsPT10P3V0OiJvYmplY3QiPT10eXBlb2YgdD9TKHQpP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGFlKHQpJiZ3cihlKT9TcihGZSh0KSxlKTpmdW5jdGlvbihyKXt2YXIgbj1MZShyLHQpO3JldHVybiB2b2lkIDA9PT1uJiZuPT09ZT96cihyLHQpOmpyKGUsbixQcnxFcil9fSh0WzBdLHRbMV0pOkFyKHQpOmtyKHQpfWZ1bmN0aW9uICRyKHQsZSl7dmFyIHI9LTEsbj1ldCh0KT9BcnJheSh0Lmxlbmd0aCk6W107cmV0dXJuIG90KHQsKGZ1bmN0aW9uKHQsbyx1KXtuWysrcl09ZSh0LG8sdSl9KSksbn1mdW5jdGlvbiBMcih0LGU9e30pe2xldCByPUxlKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiBUcih0LGU9MSxyPXt9KXtsZXQgbj1MZShyLCJwYXRoIiksbz1MZShyLCJmcyIpO2lmKCFMcih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz1MZShyLCJwYXRoIiksdT1MZShyLCJmcyIpO2lmKCFMcih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gTHIocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP0llOk1lKShpLEZyKGEpKSx1PWZ1bmN0aW9uKHQsZSl7cmV0dXJuKFModCk/U2U6JHIpKHQsRnIoZSkpfSh1LCh0PT4oZGVsZXRlIHQuaXNGb2xkZXIsdCkpKSx1fWZ1bmN0aW9uIERyKHQpe3JldHVybiBEcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0sRHIodCl9ZnVuY3Rpb24gSXIodCl7dmFyIGU9ZnVuY3Rpb24odCxlKXtpZigib2JqZWN0IiE9PURyKHQpfHxudWxsPT09dClyZXR1cm4gdDt2YXIgcj10W1N5bWJvbC50b1ByaW1pdGl2ZV07aWYodm9pZCAwIT09cil7dmFyIG49ci5jYWxsKHQsZXx8ImRlZmF1bHQiKTtpZigib2JqZWN0IiE9PURyKG4pKXJldHVybiBuO3Rocm93IG5ldyBUeXBlRXJyb3IoIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuIil9cmV0dXJuKCJzdHJpbmciPT09ZT9TdHJpbmc6TnVtYmVyKSh0KX0odCwic3RyaW5nIik7cmV0dXJuInN5bWJvbCI9PT1EcihlKT9lOlN0cmluZyhlKX1mdW5jdGlvbiBNcih0LGUscil7cmV0dXJuKGU9SXIoZSkpaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9Y29uc3QgTnI9bmV3IFVpbnQ4QXJyYXkoWzAsOTcsMTE1LDEwOSwxLDAsMCwwLDEsNDgsOCw5NiwzLDEyNywxMjcsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjcsMCw5NiwyLDEyNywxMjcsMCw5NiwxLDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI2LDEsMTI2LDk2LDMsMTI2LDEyNywxMjcsMSwxMjYsOTYsMiwxMjcsMTI2LDAsOTYsMSwxMjcsMSwxMjYsMywxMSwxMCwwLDAsMiwxLDMsNCw1LDYsMSw3LDUsMywxLDAsMSw3LDg1LDksMywxMDksMTAxLDEwOSwyLDAsNSwxMjAsMTIwLDEwNCw1MSw1MCwwLDAsNiwxMDUsMTEwLDEwNSwxMTYsNTEsNTAsMCwyLDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1MSw1MCwwLDMsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1MSw1MCwwLDQsNSwxMjAsMTIwLDEwNCw1NCw1MiwwLDUsNiwxMDUsMTEwLDEwNSwxMTYsNTQsNTIsMCw3LDgsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw1NCw1MiwwLDgsOCwxMDAsMTA1LDEwMywxMDEsMTE1LDExNiw1NCw1MiwwLDksMTAsMjUxLDIyLDEwLDI0MiwxLDEsNCwxMjcsMzIsMCwzMiwxLDEwNiwzMywzLDMyLDEsNjUsMTYsNzksNCwxMjcsMzIsMyw2NSwxNiwxMDcsMzMsNiwzMiwyLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiwzMywzLDMyLDIsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDMzLDQsMzIsMiw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDQsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDQsMzIsMiwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiw1LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDYsMzIsMCw2NSw0LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NSwxMiwxMTksMzIsNSw2NSwxOCwxMTksMTA2LDMyLDQsNjUsNywxMTksMTA2LDMyLDMsNjUsMSwxMTksMTA2LDUsMzIsMiw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMSwxMDYsMzIsMCwzMiwxLDY1LDE1LDExMywxNiwxLDExLDE0NiwxLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMSw2NSw0LDEwNiwzMiwyLDc1LDY5LDQsNjQsMzIsMCwzMiwxLDQwLDIsMCw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwxMDYsNjUsMTcsMTE5LDY1LDE3NSwyMTQsMjExLDE5MCwyLDEwOCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMiwxLDExLDExLDMsNjQsMzIsMSwzMiwyLDc5LDY5LDQsNjQsMzIsMCwzMiwxLDQ1LDAsMCw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDgsMTA2LDY1LDExLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NSwxNSwxMTgsMTE1LDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDM0LDAsNjUsMTMsMTE4LDMyLDAsMTE1LDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDM0LDAsNjUsMTYsMTE4LDMyLDAsMTE1LDExLDYzLDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY1LDE2OCwxMzYsMTQxLDE2MSwyLDEwNiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMSw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDEsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDU0LDIsMCwxMSwxOTUsNCwxLDYsMTI3LDMyLDEsMzIsMiwxMDYsMzMsNiwzMiwwLDY1LDI0LDEwNiwzMyw0LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MCwyLDAsMzIsMiwxMDYsNTQsMiwwLDMyLDAsNjUsNCwxMDYsMzQsNSwzMiw1LDQwLDIsMCwzMiwyLDY1LDE2LDc5LDMyLDAsNDAsMiwwLDY1LDE2LDc5LDExNCwxMTQsNTQsMiwwLDMyLDIsMzIsMywxMDYsNjUsMTYsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMTYsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsNCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw4LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDEyLDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSw0MCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsMzIsNiw2NSwxNiwxMDcsNzcsNCw2NCwzMiw2LDY1LDE2LDEwNywzMyw4LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDMzLDIsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDMzLDMsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDUsMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDMzLDcsMyw2NCwzMiwyLDMyLDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMiwzMiwzLDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywzLDMyLDUsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNywzMiw4LDMyLDEsNjUsNCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsMiw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzIsMyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsNSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsNyw1NCwyLDAsMTEsMzIsMSwzMiw2LDczLDQsNjQsMzIsNCwzMiwxLDMyLDYsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsNDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDk3LDEsMSwxMjcsMzIsMCw2NSwxNiwxMDYsNDAsMiwwLDMzLDEsMzIsMCw2NSw0LDEwNiw0MCwyLDAsNCwxMjcsMzIsMSw2NSwxMiwxMTksMzIsMCw2NSwyMCwxMDYsNDAsMiwwLDY1LDE4LDExOSwxMDYsMzIsMCw2NSwxMiwxMDYsNDAsMiwwLDY1LDcsMTE5LDEwNiwzMiwwLDY1LDgsMTA2LDQwLDIsMCw2NSwxLDExOSwxMDYsNSwzMiwxLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwwLDQwLDIsMCwxMDYsMzIsMCw2NSwyNCwxMDYsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDE2LDEsMTEsMjU1LDMsMiwzLDEyNiwxLDEyNywzMiwwLDMyLDEsMTA2LDMzLDYsMzIsMSw2NSwzMiw3OSw0LDEyNiwzMiw2LDY1LDMyLDEwNywzMyw2LDMyLDIsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsMzMsMywzMiwyLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDMzLDQsMzIsMiw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCwzMyw1LDMsNjQsMzIsMywzMiwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMywzMiw0LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDQsMzIsMiwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywyLDMyLDUsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNSwzMiw2LDMyLDAsNjUsOCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjYsMTIsMTM3LDMyLDUsNjYsMTgsMTM3LDEyNCwzMiw0LDY2LDcsMTM3LDEyNCwzMiwzLDY2LDEsMTM3LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMiw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMiw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwxLDE3MywxMjQsMzIsMCwzMiwxLDY1LDMxLDExMywxNiw2LDExLDEzNCwyLDAsMzIsMSwzMiwyLDEwNiwzMywyLDMsNjQsMzIsMiwzMiwxLDY1LDgsMTA2LDc5LDQsNjQsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzIsMCwxMzMsNjYsMjcsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzMsMCwzMiwxLDY1LDgsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwxLDY1LDQsMTA2LDMyLDIsNzcsNCw2NCwzMiwwLDMyLDEsNTMsMiwwLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDIzLDEzNyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNCwzMywwLDMyLDEsNjUsNCwxMDYsMzMsMSwxMSwzLDY0LDMyLDEsMzIsMiw3Myw0LDY0LDMyLDAsMzIsMSw0OSwwLDAsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjYsMTMzLDY2LDExLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY2LDMzLDEzNiwxMzMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMzQsMCwzMiwwLDY2LDI5LDEzNiwxMzMsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjYsMzQsMCwzMiwwLDY2LDMyLDEzNiwxMzMsMTEsNzcsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjYsMjE0LDIzNSwxMzAsMjM4LDIzNCwyNTMsMTM3LDI0NSwyMjQsMCwxMjQsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDEsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDEsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDEsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsNTUsMywwLDExLDI0NCw0LDIsMywxMjcsNCwxMjYsMzIsMSwzMiwyLDEwNiwzMyw1LDMyLDAsNjUsNDAsMTA2LDMzLDQsMzIsMCw2NSwyMDAsMCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQxLDMsMCwzMiwyLDE3MywxMjQsNTUsMywwLDMyLDIsMzIsMywxMDYsNjUsMzIsNzMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsMzIsMiwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDIsMzIsMywxMDYsNTQsMiwwLDE1LDExLDMyLDMsNCw2NCwzMiwzLDMyLDQsMTA2LDMyLDEsNjUsMzIsMzIsMywxMDcsMzQsMiwyNTIsMTAsMCwwLDMyLDAsNjUsOCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSw4LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMTYsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwyNCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyMDAsMCwxMDYsNjUsMCw1NCwyLDAsMzIsMSwzMiwyLDEwNiwzMywxLDExLDMyLDEsNjUsMzIsMTA2LDMyLDUsNzcsNCw2NCwzMiw1LDY1LDMyLDEwNywzMywyLDMyLDAsNjUsOCwxMDYsNDEsMywwLDMzLDYsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDMzLDcsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDgsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDMzLDksMyw2NCwzMiw2LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw2LDMyLDcsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNywzMiw4LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDgsMzIsOSwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw5LDMyLDIsMzIsMSw2NSw4LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiw2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiw3LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiw4LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiw5LDU1LDMsMCwxMSwzMiwxLDMyLDUsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNSwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsMTg4LDIsMSw1LDEyNiwzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsMSwzMiwwLDQxLDMsMCwzNCwyLDY2LDMyLDkwLDQsMTI2LDMyLDAsNjUsOCwxMDYsNDEsMywwLDM0LDMsNjYsMSwxMzcsMzIsMCw2NSwxNiwxMDYsNDEsMywwLDM0LDQsNjYsNywxMzcsMTI0LDMyLDEsNjYsMTIsMTM3LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzNCw1LDY2LDE4LDEzNywxMjQsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwxLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwxLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDIsMTI0LDMyLDAsNjUsNDAsMTA2LDMyLDIsNjYsMzEsMTMxLDE2NywxNiw2LDExXSk7dmFyIFVyPS9ccy87dmFyIFJyPS9eXHMrLztmdW5jdGlvbiBCcih0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmVXIudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShSciwiIik6dH12YXIgQ3I9TmFOLFdyPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHFyPS9eMGJbMDFdKyQvaSxWcj0vXjBvWzAtN10rJC9pLEdyPXBhcnNlSW50O3ZhciBIcj0xLzAsSnI9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIEtyKHQpe3JldHVybiB0Pyh0PWZ1bmN0aW9uKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihvZSh0KSlyZXR1cm4gQ3I7aWYoSyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9SyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9QnIodCk7dmFyIHI9cXIudGVzdCh0KTtyZXR1cm4gcnx8VnIudGVzdCh0KT9Hcih0LnNsaWNlKDIpLHI/Mjo4KTpXci50ZXN0KHQpP0NyOit0fSh0KSk9PT1Icnx8dD09PS1Icj8odDwwPy0xOjEpKkpyOnQ9PXQ/dDowOjA9PT10P3Q6MH1hc3luYyBmdW5jdGlvbiBRcih0LGU9e30pe2xldCByPUxlKGUsImZzIiksbj1MZShlLCJjaHVua1NpemUiKTt2YXIgbztpZihyZShuKXx8KG49NjcxMDg4NjQpLG49cmUobz1uKT9LcihvKTowLCFUZSh0LHtmczpyfSkpcmV0dXJuIFByb21pc2UucmVqZWN0KCJmcCBpcyBub3QgYSBmaWxlIik7bGV0IHU9ZnVuY3Rpb24oKXtsZXQgdCxlLHI9bmV3IFByb21pc2UoKGZ1bmN0aW9uKCl7dD1hcmd1bWVudHNbMF0sZT1hcmd1bWVudHNbMV19KSk7cmV0dXJuIHIucmVzb2x2ZT10LHIucmVqZWN0PWUscn0oKTt0cnl7bGV0e2NyZWF0ZTY0OmV9PWF3YWl0IGFzeW5jIGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0e2V4cG9ydHM6e21lbTplLHh4aDMyOnIseHhoNjQ6bixpbml0MzI6byx1cGRhdGUzMjp1LGRpZ2VzdDMyOmksaW5pdDY0OmEsdXBkYXRlNjQ6YyxkaWdlc3Q2NDpmfX09dDtsZXQgcz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcik7ZnVuY3Rpb24gbCh0LHIpe2lmKGUuYnVmZmVyLmJ5dGVMZW5ndGg8dCtyKXtjb25zdCBuPU1hdGguY2VpbCgodCtyLWUuYnVmZmVyLmJ5dGVMZW5ndGgpLzY1NTM2KTtlLmdyb3cobikscz1uZXcgVWludDhBcnJheShlLmJ1ZmZlcil9fWZ1bmN0aW9uIHAodCxlLHIsbixvLHUpe2wodCk7Y29uc3QgaT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcy5zZXQoaSkscigwLGUpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSkse3VwZGF0ZShlKXtsZXQgcjtyZXR1cm4gcy5zZXQoaSksInN0cmluZyI9PXR5cGVvZiBlPyhsKDMqZS5sZW5ndGgsdCkscj12LmVuY29kZUludG8oZSxzLnN1YmFycmF5KHQpKS53cml0dGVuKToobChlLmJ5dGVMZW5ndGgsdCkscy5zZXQoZSx0KSxyPWUuYnl0ZUxlbmd0aCksbigwLHQsciksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx0aGlzfSxkaWdlc3Q6KCk9PihzLnNldChpKSx1KG8oMCkpKX19ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdD4+PjB9Y29uc3QgeT0ybioqNjRuLTFuO2Z1bmN0aW9uIGIodCl7cmV0dXJuIHQmeX1jb25zdCB2PW5ldyBUZXh0RW5jb2RlcixkPTAsZz0wbjtmdW5jdGlvbiBfKHQsZT1kKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLGgocigwLHYuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfWZ1bmN0aW9uIGoodCxlPWcpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksYihuKDAsdi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9cmV0dXJue2gzMjpfLGgzMlRvU3RyaW5nOih0LGU9ZCk9Pl8odCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoOCwiMCIpLGgzMlJhdzoodCxlPWQpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCksaChyKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlMzI6KHQ9ZCk9PnAoNDgsdCxvLHUsaSxoKSxoNjQ6aixoNjRUb1N0cmluZzoodCxlPWcpPT5qKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIiksaDY0UmF3Oih0LGU9Zyk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxiKG4oMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGU2NDoodD1nKT0+cCg4OCx0LGEsYyxmLGIpfX0oKGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKE5yKSkuaW5zdGFuY2UpfSgpLG89ZSgpLGk9ci5jcmVhdGVSZWFkU3RyZWFtKHQse2hpZ2hXYXRlck1hcms6bn0pO2kub24oImRhdGEiLCh0PT57by51cGRhdGUodCl9KSksaS5vbigiZW5kIiwoKCk9PntsZXQgdD1vLmRpZ2VzdCgpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpO3UucmVzb2x2ZSh0KX0pKSxpLm9uKCJlcnJvciIsdS5yZWplY3QpfWNhdGNoKHQpe3UucmVqZWN0KHQudG9TdHJpbmcoKSl9cmV0dXJuIHV9ZnVuY3Rpb24gWHIodCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIFlyKHQscj17fSl7cmV0dXJuIFFyKHQsZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/WHIoT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtNcih0LGUscltlXSl9KSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6WHIoT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9KHtmczplfSxyKSl9bGV0IGNoZWNrVG90YWxIYXNoPWFzeW5jKHIsbixvLHUpPT57bGV0IGk9dC5qb2luKHUsbyksYT0hMTtpZihhPURlKGkpLCFyZShyKSl7cmV0dXJue2Vycm9yOiJpbnZhbGlkIGZpbGVTaXplIGluIHBheWxvYWQifX1sZXQgYz0hMTtpZihhKXtjPXI9PT1lLnN0YXRTeW5jKGkpLnNpemV9bGV0IGY9ITE7YSYmYyYmYXdhaXQgWXIoaSkudGhlbigodD0+e2Y9bz09PXR9KSkuY2F0Y2goKHQ9Pntjb25zb2xlLmxvZyh0KSxjb25zb2xlLmxvZygiZnNJc0ZpbGUocGF0aEZpbGUpIixpLERlKGkpKSxmPSExfSkpO2xldCBzPWZ1bmN0aW9uKHIsbj0xKXtyZXR1cm4gVHIocixuLHtwYXRoOnQsZnM6ZX0pfSh1KSxsPVtdO2l0KHMsKCh0LHIpPT57bGV0IHU9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsaT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW47dSYmaSYmbC5wdXNoKHIpfSkpO2xldCBwPXRlKGwpPjA7cmV0dXJue3BhdGg6aSxiQWxsRXhpc3Q6YSxiQWxsU2l6ZTpjLGJBbGxIYXNoOmYsYlNsczpwLHNsa3M6bH19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tUb3RhbEhhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tUb3RhbEhhc2gKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(I,"base64").toString("utf8"));var I;function D(){let L=new w,I=function(s){try{return new M.Worker(s,{eval:!0})}catch(M){y(M)}}(s);if(!I)return y("invalid worker"),null;function D(){let M=function(){let M,s,w=new Promise((function(){M=arguments[0],s=arguments[1]}));return w.resolve=M,w.reject=s,w}(),s=function(){let M=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,s=[],w="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),L=w.length;for(let I=0;I<M;I++)s[I]=w[0|Math.random()*L];return s.join("")}(),w={mode:"call",id:s,fun:"main",input:[...arguments]};return I.postMessage(w),L.once(s,(s=>{"success"===s.state?M.resolve(s.msg):M.reject(s.msg)})),M}function y(M){L.emit("error",M)}return I.on("message",(function(M){let s=M,w=s.mode;"emit"!==w&&"return"!==w||("emit"===w&&L.emit(s.evName,s.msg),"return"===w&&L.emit(s.id,s))})),I.on("error",y),I.on("exit",(M=>{1!==M&&y("exit code["+M+"] !== 1")})),function(){let M={mode:"init",type:"function",input:[...arguments]};I.postMessage(M)}([...arguments]),L.main=D,L.main=D,L.terminate=function(){I?(I.terminate(),I=void 0):y("worker has been terminated")},L}L=async function(){let M=[...arguments],s=D();return await s.main(...M).finally((()=>{s.terminate()}))}}();try{process.on("unhandledRejection",(M=>{console.log("outer:unhandledRejection",M)})),process.on("uncaughtException",(M=>{console.log("outer:uncaughtException",M)})),process.on("uncaughtExceptionMonitor",(M=>{console.log("outer:uncaughtExceptionMonitor",M)}))}catch(M){}return L}(M)}({get exports(){return s},set exports(M){s=M}});var w=s,L={};!function(M,s){M.exports=function(){const M="function"==typeof Buffer,s="function"==typeof TextDecoder?new TextDecoder:void 0,w=(M=>{let s={};return M.forEach(((M,w)=>s[M]=w)),s})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),L=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,I=String.fromCharCode.bind(String),D="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):M=>new Uint8Array(Array.prototype.slice.call(M,0)),y=M=>M.replace(/[^A-Za-z0-9\+\/]/g,""),i=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,d=M=>{switch(M.length){case 4:var s=((7&M.charCodeAt(0))<<18|(63&M.charCodeAt(1))<<12|(63&M.charCodeAt(2))<<6|63&M.charCodeAt(3))-65536;return I(55296+(s>>>10))+I(56320+(1023&s));case 3:return I((15&M.charCodeAt(0))<<12|(63&M.charCodeAt(1))<<6|63&M.charCodeAt(2));default:return I((31&M.charCodeAt(0))<<6|63&M.charCodeAt(1))}},l=M=>M.replace(i,d),c=M=>{if(M=M.replace(/\s+/g,""),!L.test(M))throw new TypeError("malformed base64.");M+="==".slice(2-(3&M.length));let s,D,y,i="";for(let L=0;L<M.length;)s=w[M.charAt(L++)]<<18|w[M.charAt(L++)]<<12|(D=w[M.charAt(L++)])<<6|(y=w[M.charAt(L++)]),i+=64===D?I(s>>16&255):64===y?I(s>>16&255,s>>8&255):I(s>>16&255,s>>8&255,255&s);return i},C="function"==typeof atob?M=>atob(y(M)):M?M=>Buffer.from(M,"base64").toString("binary"):c,Z=M?M=>D(Buffer.from(M,"base64")):M=>D(C(M).split("").map((M=>M.charCodeAt(0)))),N=M?M=>Buffer.from(M,"base64").toString("utf8"):s?M=>s.decode(Z(M)):M=>l(C(M)),x=M=>y(M.replace(/[-_]/g,(M=>"-"==M?"+":"/"))),m=M=>N(x(M)),X=m;var T={};!function(M){var s=Object.prototype.hasOwnProperty,w="~";function L(){}function I(M,s,w){this.fn=M,this.context=s,this.once=w||!1}function D(M,s,L,D,y){if("function"!=typeof L)throw new TypeError("The listener must be a function");var i=new I(L,D||M,y),d=w?w+s:s;return M._events[d]?M._events[d].fn?M._events[d]=[M._events[d],i]:M._events[d].push(i):(M._events[d]=i,M._eventsCount++),M}function y(M,s){0==--M._eventsCount?M._events=new L:delete M._events[s]}function i(){this._events=new L,this._eventsCount=0}Object.create&&(L.prototype=Object.create(null),(new L).__proto__||(w=!1)),i.prototype.eventNames=function(){var M,L,I=[];if(0===this._eventsCount)return I;for(L in M=this._events)s.call(M,L)&&I.push(w?L.slice(1):L);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(M)):I},i.prototype.listeners=function(M){var s=w?w+M:M,L=this._events[s];if(!L)return[];if(L.fn)return[L.fn];for(var I=0,D=L.length,y=new Array(D);I<D;I++)y[I]=L[I].fn;return y},i.prototype.listenerCount=function(M){var s=w?w+M:M,L=this._events[s];return L?L.fn?1:L.length:0},i.prototype.emit=function(M,s,L,I,D,y){var i=w?w+M:M;if(!this._events[i])return!1;var d,l,c=this._events[i],C=arguments.length;if(c.fn){switch(c.once&&this.removeListener(M,c.fn,void 0,!0),C){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,s),!0;case 3:return c.fn.call(c.context,s,L),!0;case 4:return c.fn.call(c.context,s,L,I),!0;case 5:return c.fn.call(c.context,s,L,I,D),!0;case 6:return c.fn.call(c.context,s,L,I,D,y),!0}for(l=1,d=new Array(C-1);l<C;l++)d[l-1]=arguments[l];c.fn.apply(c.context,d)}else{var Z,N=c.length;for(l=0;l<N;l++)switch(c[l].once&&this.removeListener(M,c[l].fn,void 0,!0),C){case 1:c[l].fn.call(c[l].context);break;case 2:c[l].fn.call(c[l].context,s);break;case 3:c[l].fn.call(c[l].context,s,L);break;case 4:c[l].fn.call(c[l].context,s,L,I);break;default:if(!d)for(Z=1,d=new Array(C-1);Z<C;Z++)d[Z-1]=arguments[Z];c[l].fn.apply(c[l].context,d)}}return!0},i.prototype.on=function(M,s,w){return D(this,M,s,w,!1)},i.prototype.once=function(M,s,w){return D(this,M,s,w,!0)},i.prototype.removeListener=function(M,s,L,I){var D=w?w+M:M;if(!this._events[D])return this;if(!s)return y(this,D),this;var i=this._events[D];if(i.fn)i.fn!==s||I&&!i.once||L&&i.context!==L||y(this,D);else{for(var d=0,l=[],c=i.length;d<c;d++)(i[d].fn!==s||I&&!i[d].once||L&&i[d].context!==L)&&l.push(i[d]);l.length?this._events[D]=1===l.length?l[0]:l:y(this,D)}return this},i.prototype.removeAllListeners=function(M){var s;return M?(s=w?w+M:M,this._events[s]&&y(this,s)):(this._events=new L,this._eventsCount=0),this},i.prototype.off=i.prototype.removeListener,i.prototype.addListener=i.prototype.on,i.prefixed=w,i.EventEmitter=i,M.exports=i}({get exports(){return T},set exports(M){T=M}});var b=T;let Y;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=X("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8biYmITEhPT1lKHRbcl0scix0KTspO3JldHVybiB0fXZhciBuLG89ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbz0tMSx1PU9iamVjdCh0KSxpPXIodCksYT1pLmxlbmd0aDthLS07KXt2YXIgYz1pW24/YTorK29dO2lmKCExPT09ZSh1W2NdLGMsdSkpYnJlYWt9cmV0dXJuIHR9O3ZhciB1PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYT11fHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGM9YS5TeW1ib2wsZj1PYmplY3QucHJvdG90eXBlLHM9Zi5oYXNPd25Qcm9wZXJ0eSxsPWYudG9TdHJpbmcscD1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHk9IltvYmplY3QgTnVsbF0iLGI9IltvYmplY3QgVW5kZWZpbmVkXSIsdj1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD9iOnk6diYmdiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9cy5jYWxsKHQscCkscj10W3BdO3RyeXt0W3BdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89bC5jYWxsKHQpO3JldHVybiBuJiYoZT90W3BdPXI6ZGVsZXRlIHRbcF0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBoLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiBfKHQpe3JldHVybiBnKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09ZCh0KX12YXIgaj1PYmplY3QucHJvdG90eXBlLG09ai5oYXNPd25Qcm9wZXJ0eSxPPWoucHJvcGVydHlJc0VudW1lcmFibGUsdz1fKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/XzpmdW5jdGlvbih0KXtyZXR1cm4gZyh0KSYmbS5jYWxsKHQsImNhbGxlZSIpJiYhTy5jYWxsKHQsImNhbGxlZSIpfSxTPUFycmF5LmlzQXJyYXk7dmFyIEE9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyx4PUEmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx6PXgmJnguZXhwb3J0cz09PUE/YS5CdWZmZXI6dm9pZCAwLFA9KHo/ei5pc0J1ZmZlcjp2b2lkIDApfHxmdW5jdGlvbigpe3JldHVybiExfSxFPTkwMDcxOTkyNTQ3NDA5OTEsaz0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gRih0LGUpe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT9FOmUpJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZrLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8ZX12YXIgJD05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIEwodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PSR9dmFyIFQ9e307VFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09VFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09VFsiW29iamVjdCBJbnQ4QXJyYXldIl09VFsiW29iamVjdCBJbnQxNkFycmF5XSJdPVRbIltvYmplY3QgSW50MzJBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVFsiW29iamVjdCBBcmd1bWVudHNdIl09VFsiW29iamVjdCBBcnJheV0iXT1UWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVRbIltvYmplY3QgQm9vbGVhbl0iXT1UWyJbb2JqZWN0IERhdGFWaWV3XSJdPVRbIltvYmplY3QgRGF0ZV0iXT1UWyJbb2JqZWN0IEVycm9yXSJdPVRbIltvYmplY3QgRnVuY3Rpb25dIl09VFsiW29iamVjdCBNYXBdIl09VFsiW29iamVjdCBOdW1iZXJdIl09VFsiW29iamVjdCBPYmplY3RdIl09VFsiW29iamVjdCBSZWdFeHBdIl09VFsiW29iamVjdCBTZXRdIl09VFsiW29iamVjdCBTdHJpbmddIl09VFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBELEk9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxNPUkmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOPU0mJk0uZXhwb3J0cz09PUkmJnUucHJvY2VzcyxVPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PU0mJk0ucmVxdWlyZSYmTS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fE4mJk4uYmluZGluZyYmTi5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxSPVUmJlUuaXNUeXBlZEFycmF5LEI9Uj8oRD1SLGZ1bmN0aW9uKHQpe3JldHVybiBEKHQpfSk6ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJkwodC5sZW5ndGgpJiYhIVRbZCh0KV19LEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQsZSl7dmFyIHI9Uyh0KSxuPSFyJiZ3KHQpLG89IXImJiFuJiZQKHQpLHU9IXImJiFuJiYhbyYmQih0KSxpPXJ8fG58fG98fHUsYT1pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49QXJyYXkodCk7KytyPHQ7KW5bcl09ZShyKTtyZXR1cm4gbn0odC5sZW5ndGgsU3RyaW5nKTpbXSxjPWEubGVuZ3RoO2Zvcih2YXIgZiBpbiB0KSFlJiYhQy5jYWxsKHQsZil8fGkmJigibGVuZ3RoIj09Znx8byYmKCJvZmZzZXQiPT1mfHwicGFyZW50Ij09Zil8fHUmJigiYnVmZmVyIj09Znx8ImJ5dGVMZW5ndGgiPT1mfHwiYnl0ZU9mZnNldCI9PWYpfHxGKGYsYykpfHxhLnB1c2goZik7cmV0dXJuIGF9dmFyIHE9T2JqZWN0LnByb3RvdHlwZTt2YXIgVj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksRz1WLEg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKKHQpe2lmKHI9KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgciYmci5wcm90b3R5cGV8fHEpKXJldHVybiBHKHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKUguY2FsbCh0LG8pJiYiY29uc3RydWN0b3IiIT1vJiZuLnB1c2gobyk7cmV0dXJuIG59ZnVuY3Rpb24gSyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUT0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsWD0iW29iamVjdCBGdW5jdGlvbl0iLFk9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixaPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gdHQodCl7aWYoIUsodCkpcmV0dXJuITE7dmFyIGU9ZCh0KTtyZXR1cm4gZT09WHx8ZT09WXx8ZT09UXx8ZT09Wn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gbnVsbCE9dCYmTCh0Lmxlbmd0aCkmJiF0dCh0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQodCk/Vyh0KTpKKHQpfXZhciBudD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2lmKG51bGw9PXIpcmV0dXJuIHI7aWYoIWV0KHIpKXJldHVybiB0KHIsbik7Zm9yKHZhciBvPXIubGVuZ3RoLHU9ZT9vOi0xLGk9T2JqZWN0KHIpOyhlP3UtLTorK3U8bykmJiExIT09bihpW3VdLHUsaSk7KTtyZXR1cm4gcn19KChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZvKHQsZSxydCl9KSksb3Q9bnQ7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCxlKXt2YXIgbjtyZXR1cm4oUyh0KT9yOm90KSh0LCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246dXQpfXZhciBhdCxjdD1hWyJfX2NvcmUtanNfc2hhcmVkX18iXSxmdD0oYXQ9L1teLl0rJC8uZXhlYyhjdCYmY3Qua2V5cyYmY3Qua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2F0OiIiO3ZhciBzdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbHQodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBzdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn12YXIgcHQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8saHQ9RnVuY3Rpb24ucHJvdG90eXBlLHl0PU9iamVjdC5wcm90b3R5cGUsYnQ9aHQudG9TdHJpbmcsdnQ9eXQuaGFzT3duUHJvcGVydHksZHQ9UmVnRXhwKCJeIitidC5jYWxsKHZ0KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBndCh0KXtyZXR1cm4hKCFLKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIWZ0JiZmdCBpbiB0fSh0KSkmJih0dCh0KT9kdDpwdCkudGVzdChsdCh0KSl9ZnVuY3Rpb24gX3QodCxlKXt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSh0LGUpO3JldHVybiBndChyKT9yOnZvaWQgMH12YXIganQ9X3QoYSwiRGF0YVZpZXciKSxtdD1fdChhLCJNYXAiKSxPdD1fdChhLCJQcm9taXNlIiksd3Q9X3QoYSwiU2V0IiksU3Q9X3QoYSwiV2Vha01hcCIpLEF0PSJbb2JqZWN0IE1hcF0iLHh0PSJbb2JqZWN0IFByb21pc2VdIix6dD0iW29iamVjdCBTZXRdIixQdD0iW29iamVjdCBXZWFrTWFwXSIsRXQ9IltvYmplY3QgRGF0YVZpZXddIixrdD1sdChqdCksRnQ9bHQobXQpLCR0PWx0KE90KSxMdD1sdCh3dCksVHQ9bHQoU3QpLER0PWQ7KGp0JiZEdChuZXcganQobmV3IEFycmF5QnVmZmVyKDEpKSkhPUV0fHxtdCYmRHQobmV3IG10KSE9QXR8fE90JiZEdChPdC5yZXNvbHZlKCkpIT14dHx8d3QmJkR0KG5ldyB3dCkhPXp0fHxTdCYmRHQobmV3IFN0KSE9UHQpJiYoRHQ9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9sdChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGt0OnJldHVybiBFdDtjYXNlIEZ0OnJldHVybiBBdDtjYXNlICR0OnJldHVybiB4dDtjYXNlIEx0OnJldHVybiB6dDtjYXNlIFR0OnJldHVybiBQdH1yZXR1cm4gZX0pO3ZhciBJdD1EdCxNdD0iW29iamVjdCBTdHJpbmddIjtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fXZhciBVdD1OdCgibGVuZ3RoIiksUnQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO3ZhciBCdD0iXFx1ZDgwMC1cXHVkZmZmIixDdD0iWyIrQnQrIl0iLFd0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIscXQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsVnQ9IlteIitCdCsiXSIsR3Q9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEh0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixKdD0iKD86IitXdCsifCIrcXQrIikiKyI/IixLdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFF0PUt0K0p0KygiKD86XFx1MjAwZCg/OiIrW1Z0LEd0LEh0XS5qb2luKCJ8IikrIikiK0t0K0p0KyIpKiIpLFh0PSIoPzoiK1tWdCtXdCsiPyIsV3QsR3QsSHQsQ3RdLmpvaW4oInwiKSsiKSIsWXQ9UmVnRXhwKHF0KyIoPz0iK3F0KyIpfCIrWHQrUXQsImciKTtmdW5jdGlvbiBadCh0KXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIFJ0LnRlc3QodCl9KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1ZdC5sYXN0SW5kZXg9MDtZdC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlV0KHQpfWZ1bmN0aW9uIHRlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmZChlKT09TXQ/WnQodCk6dC5sZW5ndGg7dmFyIGUscj1JdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIGVlKHQpe3JldHVybiEoIWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IFN0cmluZ10iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KXx8IiI9PT10KX1mdW5jdGlvbiByZSh0KXtsZXQgZT0hMTtpZihlZSh0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgbmU9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gb2UodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxnKHQpJiZkKHQpPT1uZX12YXIgdWU9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8saWU9L15cdyokLztmdW5jdGlvbiBhZSh0LGUpe2lmKFModCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIW9lKHQpKXx8KGllLnRlc3QodCl8fCF1ZS50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKSl9dmFyIGNlPV90KE9iamVjdCwiY3JlYXRlIik7dmFyIGZlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbGUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gcGUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gaGUodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihwZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfWxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189Y2U/Y2UobnVsbCk6e30sdGhpcy5zaXplPTB9LGxlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LGxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihjZSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBmZS5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LGxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gY2U/dm9pZCAwIT09ZVt0XTpzZS5jYWxsKGUsdCl9LGxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPWNlJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9O3ZhciB5ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGJlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIHZlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBkZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1iZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfSxiZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1oZShlLHQpO3JldHVybiEocjwwKSYmKHI9PWUubGVuZ3RoLTE/ZS5wb3AoKTp5ZS5jYWxsKGUsciwxKSwtLXRoaXMuc2l6ZSwhMCl9LGJlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPWhlKGUsdCk7cmV0dXJuIHI8MD92b2lkIDA6ZVtyXVsxXX0sYmUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gaGUodGhpcy5fX2RhdGFfXyx0KT4tMX0sYmUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1oZShyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfSxkZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBsZSxtYXA6bmV3KG10fHxiZSksc3RyaW5nOm5ldyBsZX19LGRlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dmUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0sZGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdmUodGhpcyx0KS5nZXQodCl9LGRlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHZlKHRoaXMsdCkuaGFzKHQpfSxkZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dmUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307dmFyIGdlPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBfZSh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGdlKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gci5jYWNoZT1uZXcoX2UuQ2FjaGV8fGRlKSxyfV9lLkNhY2hlPWRlO3ZhciBqZT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxtZT0vXFwoXFwpPy9nLE9lPWZ1bmN0aW9uKHQpe3ZhciBlPV9lKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoamUsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShtZSwiJDEiKTpyfHx0KX0pKSxlfSkpLHdlPU9lO2Z1bmN0aW9uIFNlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99dmFyIEFlPTEvMCx4ZT1jP2MucHJvdG90eXBlOnZvaWQgMCx6ZT14ZT94ZS50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gUGUodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKFModCkpcmV0dXJuIFNlKHQsUGUpKyIiO2lmKG9lKHQpKXJldHVybiB6ZT96ZS5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1BZT8iLTAiOmV9ZnVuY3Rpb24gRWUodCxlKXtyZXR1cm4gUyh0KT90OmFlKHQsZSk/W3RdOndlKGZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10PyIiOlBlKHQpfSh0KSl9dmFyIGtlPTEvMDtmdW5jdGlvbiBGZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG9lKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1rZT8iLTAiOmV9ZnVuY3Rpb24gJGUodCxlKXtmb3IodmFyIHI9MCxuPShlPUVlKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtGZShlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiBMZSh0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6JGUodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gVGUodCxlPXt9KXtsZXQgcj1MZShlLCJmcyIpO3JldHVybiEhci5leGlzdHNTeW5jKHQpJiYoIXIubHN0YXRTeW5jKHQpLmlzRGlyZWN0b3J5KCkmJiFyLmxzdGF0U3luYyh0KS5pc1N5bWJvbGljTGluaygpKX1mdW5jdGlvbiBEZSh0KXtyZXR1cm4gVGUodCx7ZnM6ZX0pfWZ1bmN0aW9uIEllKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89MCx1PVtdOysrcjxuOyl7dmFyIGk9dFtyXTtlKGkscix0KSYmKHVbbysrXT1pKX1yZXR1cm4gdX1mdW5jdGlvbiBNZSh0LGUpe3ZhciByPVtdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG4sbyl7ZSh0LG4sbykmJnIucHVzaCh0KX0pKSxyfWZ1bmN0aW9uIE5lKHQpe3ZhciBlPXRoaXMuX19kYXRhX189bmV3IGJlKHQpO3RoaXMuc2l6ZT1lLnNpemV9TmUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgYmUsdGhpcy5zaXplPTB9LE5lLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPWUuZGVsZXRlKHQpO3JldHVybiB0aGlzLnNpemU9ZS5zaXplLHJ9LE5lLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KHQpfSxOZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX0sTmUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX19kYXRhX187aWYociBpbnN0YW5jZW9mIGJlKXt2YXIgbj1yLl9fZGF0YV9fO2lmKCFtdHx8bi5sZW5ndGg8MTk5KXJldHVybiBuLnB1c2goW3QsZV0pLHRoaXMuc2l6ZT0rK3Iuc2l6ZSx0aGlzO3I9dGhpcy5fX2RhdGFfXz1uZXcgZGUobil9cmV0dXJuIHIuc2V0KHQsZSksdGhpcy5zaXplPXIuc2l6ZSx0aGlzfTtmdW5jdGlvbiBVZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgZGU7KytlPHI7KXRoaXMuYWRkKHRbZV0pfWZ1bmN0aW9uIFJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoOysrcjxuOylpZihlKHRbcl0scix0KSlyZXR1cm4hMDtyZXR1cm4hMX1VZS5wcm90b3R5cGUuYWRkPVVlLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLnNldCh0LCJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIiksdGhpc30sVWUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9O3ZhciBCZT0xLENlPTI7ZnVuY3Rpb24gV2UodCxlLHIsbixvLHUpe3ZhciBpPXImQmUsYT10Lmxlbmd0aCxjPWUubGVuZ3RoO2lmKGEhPWMmJiEoaSYmYz5hKSlyZXR1cm4hMTt2YXIgZj11LmdldCh0KSxzPXUuZ2V0KGUpO2lmKGYmJnMpcmV0dXJuIGY9PWUmJnM9PXQ7dmFyIGw9LTEscD0hMCxoPXImQ2U/bmV3IFVlOnZvaWQgMDtmb3IodS5zZXQodCxlKSx1LnNldChlLHQpOysrbDxhOyl7dmFyIHk9dFtsXSxiPWVbbF07aWYobil2YXIgdj1pP24oYix5LGwsZSx0LHUpOm4oeSxiLGwsdCxlLHUpO2lmKHZvaWQgMCE9PXYpe2lmKHYpY29udGludWU7cD0hMTticmVha31pZihoKXtpZighUmUoZSwoZnVuY3Rpb24odCxlKXtpZihpPWUsIWguaGFzKGkpJiYoeT09PXR8fG8oeSx0LHIsbix1KSkpcmV0dXJuIGgucHVzaChlKTt2YXIgaX0pKSl7cD0hMTticmVha319ZWxzZSBpZih5IT09YiYmIW8oeSxiLHIsbix1KSl7cD0hMTticmVha319cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKGUpLHB9dmFyIHFlPWEuVWludDhBcnJheTtmdW5jdGlvbiBWZSh0KXt2YXIgZT0tMSxyPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCxuKXtyWysrZV09W24sdF19KSkscn1mdW5jdGlvbiBHZSh0KXt2YXIgZT0tMSxyPUFycmF5KHQuc2l6ZSk7cmV0dXJuIHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7clsrK2VdPXR9KSkscn12YXIgSGU9MSxKZT0yLEtlPSJbb2JqZWN0IEJvb2xlYW5dIixRZT0iW29iamVjdCBEYXRlXSIsWGU9IltvYmplY3QgRXJyb3JdIixZZT0iW29iamVjdCBNYXBdIixaZT0iW29iamVjdCBOdW1iZXJdIix0cj0iW29iamVjdCBSZWdFeHBdIixlcj0iW29iamVjdCBTZXRdIixycj0iW29iamVjdCBTdHJpbmddIixucj0iW29iamVjdCBTeW1ib2xdIixvcj0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLHVyPSJbb2JqZWN0IERhdGFWaWV3XSIsaXI9Yz9jLnByb3RvdHlwZTp2b2lkIDAsYXI9aXI/aXIudmFsdWVPZjp2b2lkIDA7dmFyIGNyPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsZnI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxzcj1mcj9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksSWUoZnIodCksKGZ1bmN0aW9uKGUpe3JldHVybiBjci5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBscih0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LHNyKX12YXIgcHI9MSxocj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciB5cj0xLGJyPSJbb2JqZWN0IEFyZ3VtZW50c10iLHZyPSJbb2JqZWN0IEFycmF5XSIsZHI9IltvYmplY3QgT2JqZWN0XSIsZ3I9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBfcih0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP3ZyOkl0KHQpLGY9YT92cjpJdChlKSxzPShjPWM9PWJyP2RyOmMpPT1kcixsPShmPWY9PWJyP2RyOmYpPT1kcixwPWM9PWY7aWYocCYmUCh0KSl7aWYoIVAoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgTmUpLGl8fEIodCk/V2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIHVyOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBvcjpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgcWUodCksbmV3IHFlKGUpKSk7Y2FzZSBLZTpjYXNlIFFlOmNhc2UgWmU6cmV0dXJuIHBlKCt0LCtlKTtjYXNlIFhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSB0cjpjYXNlIHJyOnJldHVybiB0PT1lKyIiO2Nhc2UgWWU6dmFyIGE9VmU7Y2FzZSBlcjp2YXIgYz1uJkhlO2lmKGF8fChhPUdlKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1KZSxpLnNldCh0LGUpO3ZhciBzPVdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIG5yOmlmKGFyKXJldHVybiBhci5jYWxsKHQpPT1hci5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImeXIpKXt2YXIgaD1zJiZnci5jYWxsKHQsIl9fd3JhcHBlZF9fIikseT1sJiZnci5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8eSl7dmFyIGI9aD90LnZhbHVlKCk6dCx2PXk/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBOZSksbyhiLHYscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgTmUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJnByLGE9bHIodCksYz1hLmxlbmd0aDtpZihjIT1scihlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpoci5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB5PWk7KytmPGM7KXt2YXIgYj10W3M9YVtmXV0sdj1lW3NdO2lmKG4pdmFyIGQ9aT9uKHYsYixzLGUsdCx1KTpuKGIsdixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/Yj09PXZ8fG8oYix2LHIsbix1KTpkKSl7aD0hMTticmVha315fHwoeT0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYheSl7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIGpyKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6X3IodCxlLHIsbixqcixvKSl9dmFyIG1yPTEsT3I9MjtmdW5jdGlvbiB3cih0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIEFyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyx3cihvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT9TcihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBOZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9qcihzLGYsbXJ8T3IsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19ZnVuY3Rpb24geHIodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24genIodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPUVlKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9RmUoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJkYoaSxvKSYmKFModCl8fHcodCkpfSh0LGUseHIpfXZhciBQcj0xLEVyPTI7ZnVuY3Rpb24ga3IodCl7cmV0dXJuIGFlKHQpP050KEZlKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuICRlKGUsdCl9fSh0KX1mdW5jdGlvbiBGcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gYWUodCkmJndyKGUpP1NyKEZlKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPUxlKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP3pyKHIsdCk6anIoZSxuLFByfEVyKX19KHRbMF0sdFsxXSk6QXIodCk6a3IodCl9ZnVuY3Rpb24gJHIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIExyKHQsZT17fSl7bGV0IHI9TGUoZSwiZnMiKTtpZighci5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIFRyKHQsZT0xLHI9e30pe2xldCBuPUxlKHIsInBhdGgiKSxvPUxlKHIsImZzIik7aWYoIUxyKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPUxlKHIsInBhdGgiKSx1PUxlKHIsImZzIik7aWYoIUxyKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiBMcihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShTKGk9dSk/SWU6TWUpKGksRnIoYSkpLHU9ZnVuY3Rpb24odCxlKXtyZXR1cm4oUyh0KT9TZTokcikodCxGcihlKSl9KHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9ZnVuY3Rpb24gRHIodCl7cmV0dXJuIERyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxEcih0KX1mdW5jdGlvbiBJcih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09RHIodCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09RHIobikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PURyKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIE1yKHQsZSxyKXtyZXR1cm4oZT1JcihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1jb25zdCBOcj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTt2YXIgVXI9L1xzLzt2YXIgUnI9L15ccysvO2Z1bmN0aW9uIEJyKHQpe3JldHVybiB0P3Quc2xpY2UoMCxmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGg7ZS0tJiZVci50ZXN0KHQuY2hhckF0KGUpKTspO3JldHVybiBlfSh0KSsxKS5yZXBsYWNlKFJyLCIiKTp0fXZhciBDcj1OYU4sV3I9L15bLStdMHhbMC05YS1mXSskL2kscXI9L14wYlswMV0rJC9pLFZyPS9eMG9bMC03XSskL2ksR3I9cGFyc2VJbnQ7dmFyIEhyPTEvMCxKcj0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7ZnVuY3Rpb24gS3IodCl7cmV0dXJuIHQ/KHQ9ZnVuY3Rpb24odCl7aWYoIm51bWJlciI9PXR5cGVvZiB0KXJldHVybiB0O2lmKG9lKHQpKXJldHVybiBDcjtpZihLKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1LKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD1Ccih0KTt2YXIgcj1xci50ZXN0KHQpO3JldHVybiByfHxWci50ZXN0KHQpP0dyKHQuc2xpY2UoMikscj8yOjgpOldyLnRlc3QodCk/Q3I6K3R9KHQpKT09PUhyfHx0PT09LUhyPyh0PDA/LTE6MSkqSnI6dD09dD90OjA6MD09PXQ/dDowfWFzeW5jIGZ1bmN0aW9uIFFyKHQsZT17fSl7bGV0IHI9TGUoZSwiZnMiKSxuPUxlKGUsImNodW5rU2l6ZSIpO3ZhciBvO2lmKHJlKG4pfHwobj02NzEwODg2NCksbj1yZShvPW4pP0tyKG8pOjAsIVRlKHQse2ZzOnJ9KSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKTtsZXQgdT1mdW5jdGlvbigpe2xldCB0LGUscj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gci5yZXNvbHZlPXQsci5yZWplY3Q9ZSxyfSgpO3RyeXtsZXR7Y3JlYXRlNjQ6ZX09YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOnUsZGlnZXN0MzI6aSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8sdSl7bCh0KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldChpKSxyKDAsZSksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldChpKSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPXYuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KGkpLHUobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB5PTJuKio2NG4tMW47ZnVuY3Rpb24gYih0KXtyZXR1cm4gdCZ5fWNvbnN0IHY9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsdi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxiKG4oMCx2LmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8sdSxpLGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGIobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYsYil9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoTnIpKS5pbnN0YW5jZSl9KCksbz1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0odCx7aGlnaFdhdGVyTWFyazpufSk7aS5vbigiZGF0YSIsKHQ9PntvLnVwZGF0ZSh0KX0pKSxpLm9uKCJlbmQiLCgoKT0+e2xldCB0PW8uZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7dS5yZXNvbHZlKHQpfSkpLGkub24oImVycm9yIix1LnJlamVjdCl9Y2F0Y2godCl7dS5yZWplY3QodC50b1N0cmluZygpKX1yZXR1cm4gdX1mdW5jdGlvbiBYcih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gWXIodCxyPXt9KXtyZXR1cm4gUXIodCxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9YcihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe01yKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpYcihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH0oe2ZzOmV9LHIpKX1sZXQgY2hlY2tUb3RhbEhhc2g9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LmpvaW4odSxvKSxhPSExO2lmKGE9RGUoaSksIXJlKHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fWxldCBjPSExO2lmKGEpe2M9cj09PWUuc3RhdFN5bmMoaSkuc2l6ZX1sZXQgZj0hMTthJiZjJiZhd2FpdCBZcihpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKHQpLGNvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksRGUoaSkpLGY9ITF9KSk7bGV0IHM9ZnVuY3Rpb24ocixuPTEpe3JldHVybiBUcihyLG4se3BhdGg6dCxmczplfSl9KHUpLGw9W107aXQocywoKHQscik9PntsZXQgdT10Lm5hbWUuaW5kZXhPZihgJHtvfV9gKT49MCxpPWUuc3RhdFN5bmModC5wYXRoKS5zaXplPT09bjt1JiZpJiZsLnB1c2gocil9KSk7bGV0IHA9dGUobCk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOnAsc2xrczpsfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function s(){let s=new b,w=function(M){try{let s=new Blob([M]),w=window.URL||window.webkitURL;return new Worker(w.createObjectURL(s))}catch(M){I(M)}}(M);if(!w)return I("invalid worker"),null;function L(){let M=function(){let M,s,w=new Promise((function(){M=arguments[0],s=arguments[1]}));return w.resolve=M,w.reject=s,w}(),L=function(){let M=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,s=[],w="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),L=w.length;for(let I=0;I<M;I++)s[I]=w[0|Math.random()*L];return s.join("")}(),I={mode:"call",id:L,fun:"main",input:[...arguments]};return w.postMessage(I),s.once(L,(s=>{"success"===s.state?M.resolve(s.msg):M.reject(s.msg)})),M}function I(M){s.emit("error",M)}return w.onmessage=function(M){!function(M){let w=M,L=w.mode;"emit"!==L&&"return"!==L||("emit"===L&&s.emit(w.evName,w.msg),"return"===L&&s.emit(w.id,w))}(M.data)},w.onerror=I,w.onmessageerror=function(M){I(M.data)},function(){let M={mode:"init",type:"function",input:[...arguments]};w.postMessage(M)}([...arguments]),s.main=L,s.main=L,s.terminate=function(){w?(w.terminate(),w=void 0):I("worker has been terminated")},s}Y=async function(){let M=[...arguments],w=s();return await w.main(...M).finally((()=>{w.terminate()}))}}();try{process.on("unhandledRejection",(M=>{console.log("outer:unhandledRejection",M)})),process.on("uncaughtException",(M=>{console.log("outer:uncaughtException",M)})),process.on("uncaughtExceptionMonitor",(M=>{console.log("outer:uncaughtExceptionMonitor",M)}))}catch(M){}return Y}()}({get exports(){return L},set exports(M){L=M}});var I=L;let D;return D="undefined"!=typeof window&&void 0!==window.document?I:w,D}));
|
|
1
|
+
!function(M,s){"object"==typeof exports&&"undefined"!=typeof module?module.exports=s(require("worker_threads")):"function"==typeof define&&define.amd?define(["worker_threads"],s):(M="undefined"!=typeof globalThis?globalThis:M||self).checkTotalHash=s(M.worker_threads)}(this,(function(M){"use strict";"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var s={};!function(s,w){s.exports=function(M){var s={};!function(M){var s=Object.prototype.hasOwnProperty,w="~";function L(){}function I(M,s,w){this.fn=M,this.context=s,this.once=w||!1}function D(M,s,L,D,i){if("function"!=typeof L)throw new TypeError("The listener must be a function");var d=new I(L,D||M,i),y=w?w+s:s;return M._events[y]?M._events[y].fn?M._events[y]=[M._events[y],d]:M._events[y].push(d):(M._events[y]=d,M._eventsCount++),M}function i(M,s){0==--M._eventsCount?M._events=new L:delete M._events[s]}function d(){this._events=new L,this._eventsCount=0}Object.create&&(L.prototype=Object.create(null),(new L).__proto__||(w=!1)),d.prototype.eventNames=function(){var M,L,I=[];if(0===this._eventsCount)return I;for(L in M=this._events)s.call(M,L)&&I.push(w?L.slice(1):L);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(M)):I},d.prototype.listeners=function(M){var s=w?w+M:M,L=this._events[s];if(!L)return[];if(L.fn)return[L.fn];for(var I=0,D=L.length,i=new Array(D);I<D;I++)i[I]=L[I].fn;return i},d.prototype.listenerCount=function(M){var s=w?w+M:M,L=this._events[s];return L?L.fn?1:L.length:0},d.prototype.emit=function(M,s,L,I,D,i){var d=w?w+M:M;if(!this._events[d])return!1;var y,l,Z=this._events[d],c=arguments.length;if(Z.fn){switch(Z.once&&this.removeListener(M,Z.fn,void 0,!0),c){case 1:return Z.fn.call(Z.context),!0;case 2:return Z.fn.call(Z.context,s),!0;case 3:return Z.fn.call(Z.context,s,L),!0;case 4:return Z.fn.call(Z.context,s,L,I),!0;case 5:return Z.fn.call(Z.context,s,L,I,D),!0;case 6:return Z.fn.call(Z.context,s,L,I,D,i),!0}for(l=1,y=new Array(c-1);l<c;l++)y[l-1]=arguments[l];Z.fn.apply(Z.context,y)}else{var C,m=Z.length;for(l=0;l<m;l++)switch(Z[l].once&&this.removeListener(M,Z[l].fn,void 0,!0),c){case 1:Z[l].fn.call(Z[l].context);break;case 2:Z[l].fn.call(Z[l].context,s);break;case 3:Z[l].fn.call(Z[l].context,s,L);break;case 4:Z[l].fn.call(Z[l].context,s,L,I);break;default:if(!y)for(C=1,y=new Array(c-1);C<c;C++)y[C-1]=arguments[C];Z[l].fn.apply(Z[l].context,y)}}return!0},d.prototype.on=function(M,s,w){return D(this,M,s,w,!1)},d.prototype.once=function(M,s,w){return D(this,M,s,w,!0)},d.prototype.removeListener=function(M,s,L,I){var D=w?w+M:M;if(!this._events[D])return this;if(!s)return i(this,D),this;var d=this._events[D];if(d.fn)d.fn!==s||I&&!d.once||L&&d.context!==L||i(this,D);else{for(var y=0,l=[],Z=d.length;y<Z;y++)(d[y].fn!==s||I&&!d[y].once||L&&d[y].context!==L)&&l.push(d[y]);l.length?this._events[D]=1===l.length?l[0]:l:i(this,D)}return this},d.prototype.removeAllListeners=function(M){var s;return M?(s=w?w+M:M,this._events[s]&&i(this,s)):(this._events=new L,this._eventsCount=0),this},d.prototype.off=d.prototype.removeListener,d.prototype.addListener=d.prototype.on,d.prefixed=w,d.EventEmitter=d,M.exports=d}({get exports(){return s},set exports(M){s=M}});var w=s;let L;!function(){if("nodejs"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let s=(I="CgogICAgICAgIC8vaW1wb3J0IHsgcGFyZW50UG9ydCB9IGZyb20gJ3dvcmtlcl90aHJlYWRzJwogICAgICAgIGxldCB7IHBhcmVudFBvcnQgfSA9IHJlcXVpcmUoJ3dvcmtlcl90aHJlYWRzJykgLy/lm6BwYWNrYWdlLmpzb27kuI3ntaZ0eXBlPW1vZHVsZeaVheeEoeazleaUr+aPtGVzNiBpbXBvcnQsIOW+l+S9v+eUqHJlcXVpcmUKICAgICAgICAvL+iLpeimgeaWvG5vZGVqcyB3b3JrZXLlhafkvb/nlKjnhKHms5Xnt6jora/nmoTljp/nlJ/lpZfku7bkvovlpoJmcywg6YG/5YWN5L2/55So6aCC5bGkaW1wb3J05Yqg6LyJ5L2/55SoLCDlm6DnhKHms5Xnt6jora/mnIPnm7TmjqXkv53nlZkKICAgICAgICAvL+S4puWboGltcG9ydOS9jeaWvHdvcmtlcuWkluWxpOmZkOWumueCunJlcXVpcmXljYAocGFja2FnZS5qc29u5LiN57WmdHlwZT1tb2R1bGUpLCDmlYXlh7rnj77pjK/oqqTnhKHms5Xnt6jora8KICAgICAgICAKCiJ1c2Ugc3RyaWN0Ijt2YXIgdD1yZXF1aXJlKCJwYXRoIiksZT1yZXF1aXJlKCJmcyIpO2Z1bmN0aW9uIHIodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG4mJiExIT09ZSh0W3JdLHIsdCk7KTtyZXR1cm4gdH12YXIgbixvPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG89LTEsdT1PYmplY3QodCksaT1yKHQpLGE9aS5sZW5ndGg7YS0tOyl7dmFyIGM9aVtuP2E6KytvXTtpZighMT09PWUodVtjXSxjLHUpKWJyZWFrfXJldHVybiB0fTt2YXIgdT0ib2JqZWN0Ij09dHlwZW9mIGdsb2JhbCYmZ2xvYmFsJiZnbG9iYWwuT2JqZWN0PT09T2JqZWN0JiZnbG9iYWwsaT0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLGE9dXx8aXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxjPWEuU3ltYm9sLGY9T2JqZWN0LnByb3RvdHlwZSxzPWYuaGFzT3duUHJvcGVydHksbD1mLnRvU3RyaW5nLHA9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDt2YXIgaD1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO3ZhciB2PSJbb2JqZWN0IE51bGxdIix5PSJbb2JqZWN0IFVuZGVmaW5lZF0iLGI9Yz9jLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBkKHQpe3JldHVybiBudWxsPT10P3ZvaWQgMD09PXQ/eTp2OmImJmIgaW4gT2JqZWN0KHQpP2Z1bmN0aW9uKHQpe3ZhciBlPXMuY2FsbCh0LHApLHI9dFtwXTt0cnl7dFtwXT12b2lkIDA7dmFyIG49ITB9Y2F0Y2godCl7fXZhciBvPWwuY2FsbCh0KTtyZXR1cm4gbiYmKGU/dFtwXT1yOmRlbGV0ZSB0W3BdKSxvfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gaC5jYWxsKHQpfSh0KX1mdW5jdGlvbiBnKHQpe3JldHVybiBudWxsIT10JiYib2JqZWN0Ij09dHlwZW9mIHR9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gZyh0KSYmIltvYmplY3QgQXJndW1lbnRzXSI9PWQodCl9dmFyIGo9T2JqZWN0LnByb3RvdHlwZSxtPWouaGFzT3duUHJvcGVydHksdz1qLnByb3BlcnR5SXNFbnVtZXJhYmxlLE89XyhmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpP186ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJm0uY2FsbCh0LCJjYWxsZWUiKSYmIXcuY2FsbCh0LCJjYWxsZWUiKX0sUz1BcnJheS5pc0FycmF5O3ZhciBBPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMseD1BJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsej14JiZ4LmV4cG9ydHM9PT1BP2EuQnVmZmVyOnZvaWQgMCxQPSh6P3ouaXNCdWZmZXI6dm9pZCAwKXx8ZnVuY3Rpb24oKXtyZXR1cm4hMX0sRT05MDA3MTk5MjU0NzQwOTkxLGs9L14oPzowfFsxLTldXGQqKSQvO2Z1bmN0aW9uICQodCxlKXt2YXIgcj10eXBlb2YgdDtyZXR1cm4hIShlPW51bGw9PWU/RTplKSYmKCJudW1iZXIiPT1yfHwic3ltYm9sIiE9ciYmay50ZXN0KHQpKSYmdD4tMSYmdCUxPT0wJiZ0PGV9dmFyIEY9OTAwNzE5OTI1NDc0MDk5MTtmdW5jdGlvbiBMKHQpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdCYmdD4tMSYmdCUxPT0wJiZ0PD1GfXZhciBUPXt9O1RbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPVRbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPVRbIltvYmplY3QgSW50OEFycmF5XSJdPVRbIltvYmplY3QgSW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IEludDMyQXJyYXldIl09VFsiW29iamVjdCBVaW50OEFycmF5XSJdPVRbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09VFsiW29iamVjdCBVaW50MTZBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLFRbIltvYmplY3QgQXJndW1lbnRzXSJdPVRbIltvYmplY3QgQXJyYXldIl09VFsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1UWyJbb2JqZWN0IEJvb2xlYW5dIl09VFsiW29iamVjdCBEYXRhVmlld10iXT1UWyJbb2JqZWN0IERhdGVdIl09VFsiW29iamVjdCBFcnJvcl0iXT1UWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPVRbIltvYmplY3QgTWFwXSJdPVRbIltvYmplY3QgTnVtYmVyXSJdPVRbIltvYmplY3QgT2JqZWN0XSJdPVRbIltvYmplY3QgUmVnRXhwXSJdPVRbIltvYmplY3QgU2V0XSJdPVRbIltvYmplY3QgU3RyaW5nXSJdPVRbIltvYmplY3QgV2Vha01hcF0iXT0hMTt2YXIgRCxJPSJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmZXhwb3J0cyYmIWV4cG9ydHMubm9kZVR5cGUmJmV4cG9ydHMsTT1JJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlJiYhbW9kdWxlLm5vZGVUeXBlJiZtb2R1bGUsTj1NJiZNLmV4cG9ydHM9PT1JJiZ1LnByb2Nlc3MsUj1mdW5jdGlvbigpe3RyeXt2YXIgdD1NJiZNLnJlcXVpcmUmJk0ucmVxdWlyZSgidXRpbCIpLnR5cGVzO3JldHVybiB0fHxOJiZOLmJpbmRpbmcmJk4uYmluZGluZygidXRpbCIpfWNhdGNoKHQpe319KCksVT1SJiZSLmlzVHlwZWRBcnJheSxCPVU/KEQ9VSxmdW5jdGlvbih0KXtyZXR1cm4gRCh0KX0pOmZ1bmN0aW9uKHQpe3JldHVybiBnKHQpJiZMKHQubGVuZ3RoKSYmISFUW2QodCldfSxDPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gVyh0LGUpe3ZhciByPVModCksbj0hciYmTyh0KSxvPSFyJiYhbiYmUCh0KSx1PSFyJiYhbiYmIW8mJkIodCksaT1yfHxufHxvfHx1LGE9aT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPUFycmF5KHQpOysrcjx0OyluW3JdPWUocik7cmV0dXJuIG59KHQubGVuZ3RoLFN0cmluZyk6W10sYz1hLmxlbmd0aDtmb3IodmFyIGYgaW4gdCkhZSYmIUMuY2FsbCh0LGYpfHxpJiYoImxlbmd0aCI9PWZ8fG8mJigib2Zmc2V0Ij09Znx8InBhcmVudCI9PWYpfHx1JiYoImJ1ZmZlciI9PWZ8fCJieXRlTGVuZ3RoIj09Znx8ImJ5dGVPZmZzZXQiPT1mKXx8JChmLGMpKXx8YS5wdXNoKGYpO3JldHVybiBhfXZhciBxPU9iamVjdC5wcm90b3R5cGU7dmFyIFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQoZShyKSl9fShPYmplY3Qua2V5cyxPYmplY3QpLEc9VixIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gSih0KXtpZihyPShlPXQpJiZlLmNvbnN0cnVjdG9yLGUhPT0oImZ1bmN0aW9uIj09dHlwZW9mIHImJnIucHJvdG90eXBlfHxxKSlyZXR1cm4gRyh0KTt2YXIgZSxyLG49W107Zm9yKHZhciBvIGluIE9iamVjdCh0KSlILmNhbGwodCxvKSYmImNvbnN0cnVjdG9yIiE9byYmbi5wdXNoKG8pO3JldHVybiBufWZ1bmN0aW9uIEsodCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuIG51bGwhPXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9dmFyIFE9IltvYmplY3QgQXN5bmNGdW5jdGlvbl0iLFg9IltvYmplY3QgRnVuY3Rpb25dIixZPSJbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSIsWj0iW29iamVjdCBQcm94eV0iO2Z1bmN0aW9uIHR0KHQpe2lmKCFLKHQpKXJldHVybiExO3ZhciBlPWQodCk7cmV0dXJuIGU9PVh8fGU9PVl8fGU9PVF8fGU9PVp9ZnVuY3Rpb24gZXQodCl7cmV0dXJuIG51bGwhPXQmJkwodC5sZW5ndGgpJiYhdHQodCl9ZnVuY3Rpb24gcnQodCl7cmV0dXJuIGV0KHQpP1codCk6Sih0KX12YXIgbnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXtpZihudWxsPT1yKXJldHVybiByO2lmKCFldChyKSlyZXR1cm4gdChyLG4pO2Zvcih2YXIgbz1yLmxlbmd0aCx1PWU/bzotMSxpPU9iamVjdChyKTsoZT91LS06Kyt1PG8pJiYhMSE9PW4oaVt1XSx1LGkpOyk7cmV0dXJuIHJ9fSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmbyh0LGUscnQpfSkpLG90PW50O2Z1bmN0aW9uIHV0KHQpe3JldHVybiB0fWZ1bmN0aW9uIGl0KHQsZSl7dmFyIG47cmV0dXJuKFModCk/cjpvdCkodCwiZnVuY3Rpb24iPT10eXBlb2Yobj1lKT9uOnV0KX12YXIgYXQsY3Q9YVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sZnQ9KGF0PS9bXi5dKyQvLmV4ZWMoY3QmJmN0LmtleXMmJmN0LmtleXMuSUVfUFJPVE98fCIiKSk/IlN5bWJvbChzcmMpXzEuIithdDoiIjt2YXIgc3Q9RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nO2Z1bmN0aW9uIGx0KHQpe2lmKG51bGwhPXQpe3RyeXtyZXR1cm4gc3QuY2FsbCh0KX1jYXRjaCh0KXt9dHJ5e3JldHVybiB0KyIifWNhdGNoKHQpe319cmV0dXJuIiJ9dmFyIHB0PS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGh0PUZ1bmN0aW9uLnByb3RvdHlwZSx2dD1PYmplY3QucHJvdG90eXBlLHl0PWh0LnRvU3RyaW5nLGJ0PXZ0Lmhhc093blByb3BlcnR5LGR0PVJlZ0V4cCgiXiIreXQuY2FsbChidCkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7ZnVuY3Rpb24gZ3QodCl7cmV0dXJuISghSyh0KXx8ZnVuY3Rpb24odCl7cmV0dXJuISFmdCYmZnQgaW4gdH0odCkpJiYodHQodCk/ZHQ6cHQpLnRlc3QobHQodCkpfWZ1bmN0aW9uIF90KHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZ3Qocik/cjp2b2lkIDB9dmFyIGp0PV90KGEsIkRhdGFWaWV3IiksbXQ9X3QoYSwiTWFwIiksd3Q9X3QoYSwiUHJvbWlzZSIpLE90PV90KGEsIlNldCIpLFN0PV90KGEsIldlYWtNYXAiKSxBdD0iW29iamVjdCBNYXBdIix4dD0iW29iamVjdCBQcm9taXNlXSIsenQ9IltvYmplY3QgU2V0XSIsUHQ9IltvYmplY3QgV2Vha01hcF0iLEV0PSJbb2JqZWN0IERhdGFWaWV3XSIsa3Q9bHQoanQpLCR0PWx0KG10KSxGdD1sdCh3dCksTHQ9bHQoT3QpLFR0PWx0KFN0KSxEdD1kOyhqdCYmRHQobmV3IGp0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1FdHx8bXQmJkR0KG5ldyBtdCkhPUF0fHx3dCYmRHQod3QucmVzb2x2ZSgpKSE9eHR8fE90JiZEdChuZXcgT3QpIT16dHx8U3QmJkR0KG5ldyBTdCkhPVB0KSYmKER0PWZ1bmN0aW9uKHQpe3ZhciBlPWQodCkscj0iW29iamVjdCBPYmplY3RdIj09ZT90LmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/bHQocik6IiI7aWYobilzd2l0Y2gobil7Y2FzZSBrdDpyZXR1cm4gRXQ7Y2FzZSAkdDpyZXR1cm4gQXQ7Y2FzZSBGdDpyZXR1cm4geHQ7Y2FzZSBMdDpyZXR1cm4genQ7Y2FzZSBUdDpyZXR1cm4gUHR9cmV0dXJuIGV9KTt2YXIgSXQ9RHQsTXQ9IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gTnQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3ZvaWQgMDplW3RdfX12YXIgUnQ9TnQoImxlbmd0aCIpLFV0PVJlZ0V4cCgiW1xcdTIwMGRcXHVkODAwLVxcdWRmZmZcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZcXHVmZTBlXFx1ZmUwZl0iKTtmdW5jdGlvbiBCdCh0KXtyZXR1cm4gVXQudGVzdCh0KX12YXIgQ3Q9IlxcdWQ4MDAtXFx1ZGZmZiIsV3Q9IlsiK0N0KyJdIixxdD0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFZ0PSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEd0PSJbXiIrQ3QrIl0iLEh0PSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixKdD0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIsS3Q9Iig/OiIrcXQrInwiK1Z0KyIpIisiPyIsUXQ9IltcXHVmZTBlXFx1ZmUwZl0/IixYdD1RdCtLdCsoIig/OlxcdTIwMGQoPzoiK1tHdCxIdCxKdF0uam9pbigifCIpKyIpIitRdCtLdCsiKSoiKSxZdD0iKD86IitbR3QrcXQrIj8iLHF0LEh0LEp0LFd0XS5qb2luKCJ8IikrIikiLFp0PVJlZ0V4cChWdCsiKD89IitWdCsiKXwiK1l0K1h0LCJnIik7ZnVuY3Rpb24gdGUodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1adC5sYXN0SW5kZXg9MDtadC50ZXN0KHQpOykrK2U7cmV0dXJuIGV9KHQpOlJ0KHQpfWZ1bmN0aW9uIGVlKHQpe2lmKG51bGw9PXQpcmV0dXJuIDA7aWYoZXQodCkpcmV0dXJuInN0cmluZyI9PXR5cGVvZihlPXQpfHwhUyhlKSYmZyhlKSYmZChlKT09TXQ/dGUodCk6dC5sZW5ndGg7dmFyIGUscj1JdCh0KTtyZXR1cm4iW29iamVjdCBNYXBdIj09cnx8IltvYmplY3QgU2V0XSI9PXI/dC5zaXplOkoodCkubGVuZ3RofWZ1bmN0aW9uIHJlKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89QXJyYXkobik7KytyPG47KW9bcl09ZSh0W3JdLHIsdCk7cmV0dXJuIG99ZnVuY3Rpb24gbmUodCxlKXtyZXR1cm4gdD09PWV8fHQhPXQmJmUhPWV9ZnVuY3Rpb24gb2UodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihuZSh0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciB1ZT1BcnJheS5wcm90b3R5cGUuc3BsaWNlO2Z1bmN0aW9uIGllKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWllLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189W10sdGhpcy5zaXplPTB9LGllLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXyxyPW9lKGUsdCk7cmV0dXJuIShyPDApJiYocj09ZS5sZW5ndGgtMT9lLnBvcCgpOnVlLmNhbGwoZSxyLDEpLC0tdGhpcy5zaXplLCEwKX0saWUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4gcjwwP3ZvaWQgMDplW3JdWzFdfSxpZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBvZSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxpZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXyxuPW9lKHIsdCk7cmV0dXJuIG48MD8oKyt0aGlzLnNpemUsci5wdXNoKFt0LGVdKSk6cltuXVsxXT1lLHRoaXN9O3ZhciBhZT1fdChPYmplY3QsImNyZWF0ZSIpO3ZhciBjZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBmZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHNlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fWZ1bmN0aW9uIGxlKHQsZSl7dmFyIHIsbixvPXQuX19kYXRhX187cmV0dXJuKCJzdHJpbmciPT0obj10eXBlb2Yocj1lKSl8fCJudW1iZXIiPT1ufHwic3ltYm9sIj09bnx8ImJvb2xlYW4iPT1uPyJfX3Byb3RvX18iIT09cjpudWxsPT09cik/b1sic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI6Imhhc2giXTpvLm1hcH1mdW5jdGlvbiBwZSh0KXt2YXIgZT0tMSxyPW51bGw9PXQ/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1zZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPWFlP2FlKG51bGwpOnt9LHRoaXMuc2l6ZT0wfSxzZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGFzKHQpJiZkZWxldGUgdGhpcy5fX2RhdGFfX1t0XTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoYWUpe3ZhciByPWVbdF07cmV0dXJuIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iPT09cj92b2lkIDA6cn1yZXR1cm4gY2UuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxzZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIGFlP3ZvaWQgMCE9PWVbdF06ZmUuY2FsbChlLHQpfSxzZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztyZXR1cm4gdGhpcy5zaXplKz10aGlzLmhhcyh0KT8wOjEsclt0XT1hZSYmdm9pZCAwPT09ZT8iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI6ZSx0aGlzfSxwZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBzZSxtYXA6bmV3KG10fHxpZSksc3RyaW5nOm5ldyBzZX19LHBlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9bGUodGhpcyx0KS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZS09ZT8xOjAsZX0scGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5nZXQodCl9LHBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIGxlKHRoaXMsdCkuaGFzKHQpfSxwZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9bGUodGhpcyx0KSxuPXIuc2l6ZTtyZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemUrPXIuc2l6ZT09bj8wOjEsdGhpc307ZnVuY3Rpb24gaGUodCl7dmFyIGU9dGhpcy5fX2RhdGFfXz1uZXcgaWUodCk7dGhpcy5zaXplPWUuc2l6ZX1oZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPW5ldyBpZSx0aGlzLnNpemU9MH0saGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9ZS5kZWxldGUodCk7cmV0dXJuIHRoaXMuc2l6ZT1lLnNpemUscn0saGUucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQodCl9LGhlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfSxoZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fX2RhdGFfXztpZihyIGluc3RhbmNlb2YgaWUpe3ZhciBuPXIuX19kYXRhX187aWYoIW10fHxuLmxlbmd0aDwxOTkpcmV0dXJuIG4ucHVzaChbdCxlXSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBwZShuKX1yZXR1cm4gci5zZXQodCxlKSx0aGlzLnNpemU9ci5zaXplLHRoaXN9O2Z1bmN0aW9uIHZlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLl9fZGF0YV9fPW5ldyBwZTsrK2U8cjspdGhpcy5hZGQodFtlXSl9ZnVuY3Rpb24geWUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGg7KytyPG47KWlmKGUodFtyXSxyLHQpKXJldHVybiEwO3JldHVybiExfXZlLnByb3RvdHlwZS5hZGQ9dmUucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KHQsIl9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iKSx0aGlzfSx2ZS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh0KX07dmFyIGJlPTEsZGU9MjtmdW5jdGlvbiBnZSh0LGUscixuLG8sdSl7dmFyIGk9ciZiZSxhPXQubGVuZ3RoLGM9ZS5sZW5ndGg7aWYoYSE9YyYmIShpJiZjPmEpKXJldHVybiExO3ZhciBmPXUuZ2V0KHQpLHM9dS5nZXQoZSk7aWYoZiYmcylyZXR1cm4gZj09ZSYmcz09dDt2YXIgbD0tMSxwPSEwLGg9ciZkZT9uZXcgdmU6dm9pZCAwO2Zvcih1LnNldCh0LGUpLHUuc2V0KGUsdCk7KytsPGE7KXt2YXIgdj10W2xdLHk9ZVtsXTtpZihuKXZhciBiPWk/bih5LHYsbCxlLHQsdSk6bih2LHksbCx0LGUsdSk7aWYodm9pZCAwIT09Yil7aWYoYiljb250aW51ZTtwPSExO2JyZWFrfWlmKGgpe2lmKCF5ZShlLChmdW5jdGlvbih0LGUpe2lmKGk9ZSwhaC5oYXMoaSkmJih2PT09dHx8byh2LHQscixuLHUpKSlyZXR1cm4gaC5wdXNoKGUpO3ZhciBpfSkpKXtwPSExO2JyZWFrfX1lbHNlIGlmKHYhPT15JiYhbyh2LHkscixuLHUpKXtwPSExO2JyZWFrfX1yZXR1cm4gdS5kZWxldGUodCksdS5kZWxldGUoZSkscH12YXIgX2U9YS5VaW50OEFycmF5O2Z1bmN0aW9uIGplKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3JbKytlXT1bbix0XX0pKSxyfWZ1bmN0aW9uIG1lKHQpe3ZhciBlPS0xLHI9QXJyYXkodC5zaXplKTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtyWysrZV09dH0pKSxyfXZhciB3ZT0xLE9lPTIsU2U9IltvYmplY3QgQm9vbGVhbl0iLEFlPSJbb2JqZWN0IERhdGVdIix4ZT0iW29iamVjdCBFcnJvcl0iLHplPSJbb2JqZWN0IE1hcF0iLFBlPSJbb2JqZWN0IE51bWJlcl0iLEVlPSJbb2JqZWN0IFJlZ0V4cF0iLGtlPSJbb2JqZWN0IFNldF0iLCRlPSJbb2JqZWN0IFN0cmluZ10iLEZlPSJbb2JqZWN0IFN5bWJvbF0iLExlPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsVGU9IltvYmplY3QgRGF0YVZpZXddIixEZT1jP2MucHJvdG90eXBlOnZvaWQgMCxJZT1EZT9EZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBNZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aCxvPTAsdT1bXTsrK3I8bjspe3ZhciBpPXRbcl07ZShpLHIsdCkmJih1W28rK109aSl9cmV0dXJuIHV9dmFyIE5lPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsUmU9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxVZT1SZT9mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD9bXToodD1PYmplY3QodCksTWUoUmUodCksKGZ1bmN0aW9uKGUpe3JldHVybiBOZS5jYWxsKHQsZSl9KSkpfTpmdW5jdGlvbigpe3JldHVybltdfTtmdW5jdGlvbiBCZSh0KXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUodCk7cmV0dXJuIFModCk/bjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0tMSxuPWUubGVuZ3RoLG89dC5sZW5ndGg7KytyPG47KXRbbytyXT1lW3JdO3JldHVybiB0fShuLHIodCkpfSh0LHJ0LFVlKX12YXIgQ2U9MSxXZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBxZT0xLFZlPSJbb2JqZWN0IEFyZ3VtZW50c10iLEdlPSJbb2JqZWN0IEFycmF5XSIsSGU9IltvYmplY3QgT2JqZWN0XSIsSmU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBLZSh0LGUscixuLG8sdSl7dmFyIGk9Uyh0KSxhPVMoZSksYz1pP0dlOkl0KHQpLGY9YT9HZTpJdChlKSxzPShjPWM9PVZlP0hlOmMpPT1IZSxsPShmPWY9PVZlP0hlOmYpPT1IZSxwPWM9PWY7aWYocCYmUCh0KSl7aWYoIVAoZSkpcmV0dXJuITE7aT0hMCxzPSExfWlmKHAmJiFzKXJldHVybiB1fHwodT1uZXcgaGUpLGl8fEIodCk/Z2UodCxlLHIsbixvLHUpOmZ1bmN0aW9uKHQsZSxyLG4sbyx1LGkpe3N3aXRjaChyKXtjYXNlIFRlOmlmKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHx0LmJ5dGVPZmZzZXQhPWUuYnl0ZU9mZnNldClyZXR1cm4hMTt0PXQuYnVmZmVyLGU9ZS5idWZmZXI7Y2FzZSBMZTpyZXR1cm4hKHQuYnl0ZUxlbmd0aCE9ZS5ieXRlTGVuZ3RofHwhdShuZXcgX2UodCksbmV3IF9lKGUpKSk7Y2FzZSBTZTpjYXNlIEFlOmNhc2UgUGU6cmV0dXJuIG5lKCt0LCtlKTtjYXNlIHhlOnJldHVybiB0Lm5hbWU9PWUubmFtZSYmdC5tZXNzYWdlPT1lLm1lc3NhZ2U7Y2FzZSBFZTpjYXNlICRlOnJldHVybiB0PT1lKyIiO2Nhc2UgemU6dmFyIGE9amU7Y2FzZSBrZTp2YXIgYz1uJndlO2lmKGF8fChhPW1lKSx0LnNpemUhPWUuc2l6ZSYmIWMpcmV0dXJuITE7dmFyIGY9aS5nZXQodCk7aWYoZilyZXR1cm4gZj09ZTtufD1PZSxpLnNldCh0LGUpO3ZhciBzPWdlKGEodCksYShlKSxuLG8sdSxpKTtyZXR1cm4gaS5kZWxldGUodCkscztjYXNlIEZlOmlmKEllKXJldHVybiBJZS5jYWxsKHQpPT1JZS5jYWxsKGUpfXJldHVybiExfSh0LGUsYyxyLG4sbyx1KTtpZighKHImcWUpKXt2YXIgaD1zJiZKZS5jYWxsKHQsIl9fd3JhcHBlZF9fIiksdj1sJiZKZS5jYWxsKGUsIl9fd3JhcHBlZF9fIik7aWYoaHx8dil7dmFyIHk9aD90LnZhbHVlKCk6dCxiPXY/ZS52YWx1ZSgpOmU7cmV0dXJuIHV8fCh1PW5ldyBoZSksbyh5LGIscixuLHUpfX1yZXR1cm4hIXAmJih1fHwodT1uZXcgaGUpLGZ1bmN0aW9uKHQsZSxyLG4sbyx1KXt2YXIgaT1yJkNlLGE9QmUodCksYz1hLmxlbmd0aDtpZihjIT1CZShlKS5sZW5ndGgmJiFpKXJldHVybiExO2Zvcih2YXIgZj1jO2YtLTspe3ZhciBzPWFbZl07aWYoIShpP3MgaW4gZTpXZS5jYWxsKGUscykpKXJldHVybiExfXZhciBsPXUuZ2V0KHQpLHA9dS5nZXQoZSk7aWYobCYmcClyZXR1cm4gbD09ZSYmcD09dDt2YXIgaD0hMDt1LnNldCh0LGUpLHUuc2V0KGUsdCk7Zm9yKHZhciB2PWk7KytmPGM7KXt2YXIgeT10W3M9YVtmXV0sYj1lW3NdO2lmKG4pdmFyIGQ9aT9uKGIseSxzLGUsdCx1KTpuKHksYixzLHQsZSx1KTtpZighKHZvaWQgMD09PWQ/eT09PWJ8fG8oeSxiLHIsbix1KTpkKSl7aD0hMTticmVha312fHwodj0iY29uc3RydWN0b3IiPT1zKX1pZihoJiYhdil7dmFyIGc9dC5jb25zdHJ1Y3RvcixfPWUuY29uc3RydWN0b3I7Zz09X3x8ISgiY29uc3RydWN0b3IiaW4gdCl8fCEoImNvbnN0cnVjdG9yImluIGUpfHwiZnVuY3Rpb24iPT10eXBlb2YgZyYmZyBpbnN0YW5jZW9mIGcmJiJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgX3x8KGg9ITEpfXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxofSh0LGUscixuLG8sdSkpfWZ1bmN0aW9uIFFlKHQsZSxyLG4sbyl7cmV0dXJuIHQ9PT1lfHwobnVsbD09dHx8bnVsbD09ZXx8IWcodCkmJiFnKGUpP3QhPXQmJmUhPWU6S2UodCxlLHIsbixRZSxvKSl9dmFyIFhlPTEsWWU9MjtmdW5jdGlvbiBaZSh0KXtyZXR1cm4gdD09dCYmIUsodCl9ZnVuY3Rpb24gdHIodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIG51bGwhPXImJihyW3RdPT09ZSYmKHZvaWQgMCE9PWV8fHQgaW4gT2JqZWN0KHIpKSl9fWZ1bmN0aW9uIGVyKHQpe3ZhciBlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1ydCh0KSxyPWUubGVuZ3RoO3ItLTspe3ZhciBuPWVbcl0sbz10W25dO2Vbcl09W24sbyxaZShvKV19cmV0dXJuIGV9KHQpO3JldHVybiAxPT1lLmxlbmd0aCYmZVswXVsyXT90cihlWzBdWzBdLGVbMF1bMV0pOmZ1bmN0aW9uKHIpe3JldHVybiByPT09dHx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG89ci5sZW5ndGgsdT1vLGk9IW47aWYobnVsbD09dClyZXR1cm4hdTtmb3IodD1PYmplY3QodCk7by0tOyl7dmFyIGE9cltvXTtpZihpJiZhWzJdP2FbMV0hPT10W2FbMF1dOiEoYVswXWluIHQpKXJldHVybiExfWZvcig7KytvPHU7KXt2YXIgYz0oYT1yW29dKVswXSxmPXRbY10scz1hWzFdO2lmKGkmJmFbMl0pe2lmKHZvaWQgMD09PWYmJiEoYyBpbiB0KSlyZXR1cm4hMX1lbHNle3ZhciBsPW5ldyBoZTtpZihuKXZhciBwPW4oZixzLGMsdCxlLGwpO2lmKCEodm9pZCAwPT09cD9RZShzLGYsWGV8WWUsbixsKTpwKSlyZXR1cm4hMX19cmV0dXJuITB9KHIsdCxlKX19dmFyIHJyPSJbb2JqZWN0IFN5bWJvbF0iO2Z1bmN0aW9uIG5yKHQpe3JldHVybiJzeW1ib2wiPT10eXBlb2YgdHx8Zyh0KSYmZCh0KT09cnJ9dmFyIG9yPS9cLnxcWyg/OlteW1xdXSp8KFsiJ10pKD86KD8hXDEpW15cXF18XFwuKSo/XDEpXF0vLHVyPS9eXHcqJC87ZnVuY3Rpb24gaXIodCxlKXtpZihTKHQpKXJldHVybiExO3ZhciByPXR5cGVvZiB0O3JldHVybiEoIm51bWJlciIhPXImJiJzeW1ib2wiIT1yJiYiYm9vbGVhbiIhPXImJm51bGwhPXQmJiFucih0KSl8fCh1ci50ZXN0KHQpfHwhb3IudGVzdCh0KXx8bnVsbCE9ZSYmdCBpbiBPYmplY3QoZSkpfXZhciBhcj0iRXhwZWN0ZWQgYSBmdW5jdGlvbiI7ZnVuY3Rpb24gY3IodCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdHx8bnVsbCE9ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihhcik7dmFyIHI9ZnVuY3Rpb24oKXt2YXIgbj1hcmd1bWVudHMsbz1lP2UuYXBwbHkodGhpcyxuKTpuWzBdLHU9ci5jYWNoZTtpZih1LmhhcyhvKSlyZXR1cm4gdS5nZXQobyk7dmFyIGk9dC5hcHBseSh0aGlzLG4pO3JldHVybiByLmNhY2hlPXUuc2V0KG8saSl8fHUsaX07cmV0dXJuIHIuY2FjaGU9bmV3KGNyLkNhY2hlfHxwZSkscn1jci5DYWNoZT1wZTt2YXIgZnI9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2csc3I9L1xcKFxcKT8vZyxscj1mdW5jdGlvbih0KXt2YXIgZT1jcih0LChmdW5jdGlvbih0KXtyZXR1cm4gNTAwPT09ci5zaXplJiZyLmNsZWFyKCksdH0pKSxyPWUuY2FjaGU7cmV0dXJuIGV9KChmdW5jdGlvbih0KXt2YXIgZT1bXTtyZXR1cm4gNDY9PT10LmNoYXJDb2RlQXQoMCkmJmUucHVzaCgiIiksdC5yZXBsYWNlKGZyLChmdW5jdGlvbih0LHIsbixvKXtlLnB1c2gobj9vLnJlcGxhY2Uoc3IsIiQxIik6cnx8dCl9KSksZX0pKSxwcj1scixocj0xLzAsdnI9Yz9jLnByb3RvdHlwZTp2b2lkIDAseXI9dnI/dnIudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIGJyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gdDtpZihTKHQpKXJldHVybiByZSh0LGJyKSsiIjtpZihucih0KSlyZXR1cm4geXI/eXIuY2FsbCh0KToiIjt2YXIgZT10KyIiO3JldHVybiIwIj09ZSYmMS90PT0taHI/Ii0wIjplfWZ1bmN0aW9uIGRyKHQpe3JldHVybiBudWxsPT10PyIiOmJyKHQpfWZ1bmN0aW9uIGdyKHQsZSl7cmV0dXJuIFModCk/dDppcih0LGUpP1t0XTpwcihkcih0KSl9dmFyIF9yPTEvMDtmdW5jdGlvbiBqcih0KXtpZigic3RyaW5nIj09dHlwZW9mIHR8fG5yKHQpKXJldHVybiB0O3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1fcj8iLTAiOmV9ZnVuY3Rpb24gbXIodCxlKXtmb3IodmFyIHI9MCxuPShlPWdyKGUsdCkpLmxlbmd0aDtudWxsIT10JiZyPG47KXQ9dFtqcihlW3IrK10pXTtyZXR1cm4gciYmcj09bj90OnZvaWQgMH1mdW5jdGlvbiB3cih0LGUscil7dmFyIG49bnVsbD09dD92b2lkIDA6bXIodCxlKTtyZXR1cm4gdm9pZCAwPT09bj9yOm59ZnVuY3Rpb24gT3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZSBpbiBPYmplY3QodCl9ZnVuY3Rpb24gU3IodCxlKXtyZXR1cm4gbnVsbCE9dCYmZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj0tMSxvPShlPWdyKGUsdCkpLmxlbmd0aCx1PSExOysrbjxvOyl7dmFyIGk9anIoZVtuXSk7aWYoISh1PW51bGwhPXQmJnIodCxpKSkpYnJlYWs7dD10W2ldfXJldHVybiB1fHwrK24hPW8/dTohIShvPW51bGw9PXQ/MDp0Lmxlbmd0aCkmJkwobykmJiQoaSxvKSYmKFModCl8fE8odCkpfSh0LGUsT3IpfXZhciBBcj0xLHhyPTI7ZnVuY3Rpb24genIodCl7cmV0dXJuIGlyKHQpP050KGpyKHQpKTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG1yKGUsdCl9fSh0KX1mdW5jdGlvbiBQcih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGw9PXQ/dXQ6Im9iamVjdCI9PXR5cGVvZiB0P1ModCk/ZnVuY3Rpb24odCxlKXtyZXR1cm4gaXIodCkmJlplKGUpP3RyKGpyKHQpLGUpOmZ1bmN0aW9uKHIpe3ZhciBuPXdyKHIsdCk7cmV0dXJuIHZvaWQgMD09PW4mJm49PT1lP1NyKHIsdCk6UWUoZSxuLEFyfHhyKX19KHRbMF0sdFsxXSk6ZXIodCk6enIodCl9ZnVuY3Rpb24gRXIodCxlKXt2YXIgcj0tMSxuPWV0KHQpP0FycmF5KHQubGVuZ3RoKTpbXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxvLHUpe25bKytyXT1lKHQsbyx1KX0pKSxufWZ1bmN0aW9uIGtyKHQsZSl7cmV0dXJuKFModCk/cmU6RXIpKHQsUHIoZSkpfXZhciAkcj0vXHMvO3ZhciBGcj0vXlxzKy87ZnVuY3Rpb24gTHIodCl7cmV0dXJuIHQ/dC5zbGljZSgwLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aDtlLS0mJiRyLnRlc3QodC5jaGFyQXQoZSkpOyk7cmV0dXJuIGV9KHQpKzEpLnJlcGxhY2UoRnIsIiIpOnR9ZnVuY3Rpb24gVHIodCxlLHIpe3ZhciBuPXQubGVuZ3RoO3JldHVybiByPXZvaWQgMD09PXI/bjpyLCFlJiZyPj1uP3Q6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPS0xLG89dC5sZW5ndGg7ZTwwJiYoZT0tZT5vPzA6bytlKSwocj1yPm8/bzpyKTwwJiYocis9byksbz1lPnI/MDpyLWU+Pj4wLGU+Pj49MDtmb3IodmFyIHU9QXJyYXkobyk7KytuPG87KXVbbl09dFtuK2VdO3JldHVybiB1fSh0LGUscil9ZnVuY3Rpb24gRHIodCl7cmV0dXJuIHQhPXR9ZnVuY3Rpb24gSXIodCxlLHIpe3JldHVybiBlPT1lP2Z1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49ci0xLG89dC5sZW5ndGg7KytuPG87KWlmKHRbbl09PT1lKXJldHVybiBuO3JldHVybi0xfSh0LGUscik6ZnVuY3Rpb24odCxlLHIsbil7Zm9yKHZhciBvPXQubGVuZ3RoLHU9cisobj8xOi0xKTtuP3UtLTorK3U8bzspaWYoZSh0W3VdLHUsdCkpcmV0dXJuIHU7cmV0dXJuLTF9KHQsRHIscil9dmFyIE1yPSJcXHVkODAwLVxcdWRmZmYiLE5yPSJbIitNcisiXSIsUnI9IltcXHUwMzAwLVxcdTAzNmZcXHVmZTIwLVxcdWZlMmZcXHUyMGQwLVxcdTIwZmZdIixVcj0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIixCcj0iW14iK01yKyJdIixDcj0iKD86XFx1ZDgzY1tcXHVkZGU2LVxcdWRkZmZdKXsyfSIsV3I9IltcXHVkODAwLVxcdWRiZmZdW1xcdWRjMDAtXFx1ZGZmZl0iLHFyPSIoPzoiK1JyKyJ8IitVcisiKSIrIj8iLFZyPSJbXFx1ZmUwZVxcdWZlMGZdPyIsR3I9VnIrcXIrKCIoPzpcXHUyMDBkKD86IitbQnIsQ3IsV3JdLmpvaW4oInwiKSsiKSIrVnIrcXIrIikqIiksSHI9Iig/OiIrW0JyK1JyKyI/IixScixDcixXcixOcl0uam9pbigifCIpKyIpIixKcj1SZWdFeHAoVXIrIig/PSIrVXIrIil8IitIcitHciwiZyIpO2Z1bmN0aW9uIEtyKHQpe3JldHVybiBCdCh0KT9mdW5jdGlvbih0KXtyZXR1cm4gdC5tYXRjaChKcil8fFtdfSh0KTpmdW5jdGlvbih0KXtyZXR1cm4gdC5zcGxpdCgiIil9KHQpfWZ1bmN0aW9uIFFyKHQsZSxyKXtpZigodD1kcih0KSkmJihyfHx2b2lkIDA9PT1lKSlyZXR1cm4gTHIodCk7aWYoIXR8fCEoZT1icihlKSkpcmV0dXJuIHQ7dmFyIG49S3IodCksbz1LcihlKSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49dC5sZW5ndGg7KytyPG4mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pLGk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tJiZJcihlLHRbcl0sMCk+LTE7KTtyZXR1cm4gcn0obixvKSsxO3JldHVybiBUcihuLHUsaSkuam9pbigiIil9ZnVuY3Rpb24gWHIodCl7cmV0dXJuISghZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgU3RyaW5nXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpfHwiIj09PXQpfWZ1bmN0aW9uIFlyKHQsZSl7aWYoIVhyKHQpKXJldHVybltdO2lmKCFYcihlKSlyZXR1cm5bXTtsZXQgcj1mdW5jdGlvbih0LGUpe3JldHVybiBYcih0KSYmWHIoZSk/dC5zcGxpdChlKTpbXX0odCxlKTtyPWtyKHIsUXIpO2xldCBuPVtdO3JldHVybiBpdChyLChmdW5jdGlvbih0KXtYcih0KSYmbi5wdXNoKHQpfSkpLG59ZnVuY3Rpb24gWnIodCl7bGV0IGU9ITE7aWYoWHIodCkpZT0haXNOYU4oTnVtYmVyKHQpKTtlbHNlIGlmKGZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IE51bWJlcl0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfSh0KSl7aWYoZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9KHQpKXJldHVybiExO2U9ITB9cmV0dXJuIGV9dmFyIHRuPU5hTixlbj0vXlstK10weFswLTlhLWZdKyQvaSxybj0vXjBiWzAxXSskL2ksbm49L14wb1swLTddKyQvaSxvbj1wYXJzZUludDtmdW5jdGlvbiB1bih0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobnIodCkpcmV0dXJuIHRuO2lmKEsodCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PUsoZSk/ZSsiIjplfWlmKCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gMD09PXQ/dDordDt0PUxyKHQpO3ZhciByPXJuLnRlc3QodCk7cmV0dXJuIHJ8fG5uLnRlc3QodCk/b24odC5zbGljZSgyKSxyPzI6OCk6ZW4udGVzdCh0KT90bjordH12YXIgYW49MS8wLGNuPTE3OTc2OTMxMzQ4NjIzMTU3ZTI5MjtmdW5jdGlvbiBmbih0KXtyZXR1cm4gdD8odD11bih0KSk9PT1hbnx8dD09PS1hbj8odDwwPy0xOjEpKmNuOnQ9PXQ/dDowOjA9PT10P3Q6MH1mdW5jdGlvbiBzbih0KXt2YXIgZT1mbih0KSxyPWUlMTtyZXR1cm4gZT09ZT9yP2UtcjplOjB9ZnVuY3Rpb24gbG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3JldHVybiBmbih0KX1mdW5jdGlvbiBwbih0KXtyZXR1cm4hIVpyKHQpJiYodD1sbih0KSwibnVtYmVyIj09dHlwZW9mKGU9dCkmJmU9PXNuKGUpKTt2YXIgZX12YXIgaG49YS5pc0Zpbml0ZSx2bj1NYXRoLm1pbjt2YXIgeW49ZnVuY3Rpb24odCl7dmFyIGU9TWF0aFt0XTtyZXR1cm4gZnVuY3Rpb24odCxyKXtpZih0PXVuKHQpLChyPW51bGw9PXI/MDp2bihzbihyKSwyOTIpKSYmaG4odCkpe3ZhciBuPShkcih0KSsiZSIpLnNwbGl0KCJlIik7cmV0dXJuKygobj0oZHIoZShuWzBdKyJlIisoK25bMV0rcikpKSsiZSIpLnNwbGl0KCJlIikpWzBdKyJlIisoK25bMV0tcikpfXJldHVybiBlKHQpfX0oInJvdW5kIiksYm49eW47ZnVuY3Rpb24gZG4odCl7aWYoIVpyKHQpKXJldHVybiAwO3Q9bG4odCk7bGV0IGU9Ym4odCk7cmV0dXJuIjAiPT09U3RyaW5nKGUpPzA6ZX1mdW5jdGlvbiBnbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7cmV0dXJuISFyLmV4aXN0c1N5bmModCkmJighci5sc3RhdFN5bmModCkuaXNEaXJlY3RvcnkoKSYmIXIubHN0YXRTeW5jKHQpLmlzU3ltYm9saWNMaW5rKCkpfWZ1bmN0aW9uIF9uKHQpe3JldHVybiBnbih0LHtmczplfSl9ZnVuY3Rpb24gam4odCxlKXt2YXIgcj1bXTtyZXR1cm4gb3QodCwoZnVuY3Rpb24odCxuLG8pe2UodCxuLG8pJiZyLnB1c2godCl9KSkscn1mdW5jdGlvbiBtbih0LGU9e30pe2xldCByPXdyKGUsImZzIik7aWYoIXIuZXhpc3RzU3luYyh0KSlyZXR1cm4hMTtsZXQgbj1yLmxzdGF0U3luYyh0KTtyZXR1cm4hbi5pc0ZpbGUoKSYmIW4uaXNTeW1ib2xpY0xpbmsoKX1mdW5jdGlvbiB3bih0LGU9MSxyPXt9KXtsZXQgbj13cihyLCJwYXRoIiksbz13cihyLCJmcyIpO2lmKCFtbih0LHtmczpvfSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtsZXQgdT1bXTt2YXIgaSxhO3JldHVybiB1PWZ1bmN0aW9uKHQsZT0xLHI9e30pe2xldCBuPTEsbz13cihyLCJwYXRoIiksdT13cihyLCJmcyIpO2lmKCFtbih0LHtmczp1fSkpdGhyb3cgbmV3IEVycm9yKGBmZFske3R9XSBpcyBub3QgYSBmb2xkZXJgKTtyZXR1cm4gZnVuY3Rpb24gdChyKXtsZXQgaT1bXTtyZXR1cm4gbW4ocix7ZnM6dX0pPyhpdCh1LnJlYWRkaXJTeW5jKHIpLChmdW5jdGlvbihhKXtsZXQgYz1vLnJlc29sdmUocixhKSxmPW51bGw7dHJ5e2Y9dS5zdGF0U3luYyhjKX1jYXRjaCh0KXt9ZiYmZi5pc0RpcmVjdG9yeSgpPyhpLnB1c2goe2lzRm9sZGVyOiEwLGxldmVsOm4scGF0aDpjLG5hbWU6by5iYXNlbmFtZShjKX0pLG4rPTEsKG48PWV8fG51bGw9PT1lKSYmKGk9aS5jb25jYXQodChjKSkpLG4tPTEpOmkucHVzaCh7aXNGb2xkZXI6ITEsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSl9KSksaSk6aX0odCl9KHQsZSx7cGF0aDpuLGZzOm99KSxhPXtpc0ZvbGRlcjohMX0sdT0oUyhpPXUpP01lOmpuKShpLFByKGEpKSx1PWtyKHUsKHQ9PihkZWxldGUgdC5pc0ZvbGRlcix0KSkpLHV9ZnVuY3Rpb24gT24odCl7cmV0dXJuIE9uPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSxPbih0KX1mdW5jdGlvbiBTbih0KXt2YXIgZT1mdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiIT09T24odCl8fG51bGw9PT10KXJldHVybiB0O3ZhciByPXRbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZih2b2lkIDAhPT1yKXt2YXIgbj1yLmNhbGwodCxlfHwiZGVmYXVsdCIpO2lmKCJvYmplY3QiIT09T24obikpcmV0dXJuIG47dGhyb3cgbmV3IFR5cGVFcnJvcigiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS4iKX1yZXR1cm4oInN0cmluZyI9PT1lP1N0cmluZzpOdW1iZXIpKHQpfSh0LCJzdHJpbmciKTtyZXR1cm4ic3ltYm9sIj09PU9uKGUpP2U6U3RyaW5nKGUpfWZ1bmN0aW9uIEFuKHQsZSxyKXtyZXR1cm4oZT1TbihlKSlpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1jb25zdCB4bj1uZXcgVWludDhBcnJheShbMCw5NywxMTUsMTA5LDEsMCwwLDAsMSw0OCw4LDk2LDMsMTI3LDEyNywxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNywwLDk2LDIsMTI3LDEyNywwLDk2LDEsMTI3LDEsMTI3LDk2LDMsMTI3LDEyNywxMjYsMSwxMjYsOTYsMywxMjYsMTI3LDEyNywxLDEyNiw5NiwyLDEyNywxMjYsMCw5NiwxLDEyNywxLDEyNiwzLDExLDEwLDAsMCwyLDEsMyw0LDUsNiwxLDcsNSwzLDEsMCwxLDcsODUsOSwzLDEwOSwxMDEsMTA5LDIsMCw1LDEyMCwxMjAsMTA0LDUxLDUwLDAsMCw2LDEwNSwxMTAsMTA1LDExNiw1MSw1MCwwLDIsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDUxLDUwLDAsMyw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDUxLDUwLDAsNCw1LDEyMCwxMjAsMTA0LDU0LDUyLDAsNSw2LDEwNSwxMTAsMTA1LDExNiw1NCw1MiwwLDcsOCwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDU0LDUyLDAsOCw4LDEwMCwxMDUsMTAzLDEwMSwxMTUsMTE2LDU0LDUyLDAsOSwxMCwyNTEsMjIsMTAsMjQyLDEsMSw0LDEyNywzMiwwLDMyLDEsMTA2LDMzLDMsMzIsMSw2NSwxNiw3OSw0LDEyNywzMiwzLDY1LDE2LDEwNywzMyw2LDMyLDIsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDMzLDMsMzIsMiw2NSwxMzcsMjM1LDIwOCwyMDgsNywxMDcsMzMsNCwzMiwyLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiwzMyw1LDMsNjQsMzIsMywzMiwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNCwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNCwzMiwyLDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDUsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDUsMzIsNiwzMiwwLDY1LDQsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY1LDEyLDExOSwzMiw1LDY1LDE4LDExOSwxMDYsMzIsNCw2NSw3LDExOSwxMDYsMzIsMyw2NSwxLDExOSwxMDYsNSwzMiwyLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwNiwxMSwzMiwxLDEwNiwzMiwwLDMyLDEsNjUsMTUsMTEzLDE2LDEsMTEsMTQ2LDEsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwxLDY1LDQsMTA2LDMyLDIsNzUsNjksNCw2NCwzMiwwLDMyLDEsNDAsMiwwLDY1LDE4OSwyMjAsMjAyLDE0OSwxMjQsMTA4LDEwNiw2NSwxNywxMTksNjUsMTc1LDIxNCwyMTEsMTkwLDIsMTA4LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDEyLDEsMTEsMTEsMyw2NCwzMiwxLDMyLDIsNzksNjksNCw2NCwzMiwwLDMyLDEsNDUsMCwwLDY1LDE3NywyMDcsMjE3LDE3OCwxLDEwOCwxMDYsNjUsMTEsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDAsMzIsMSw2NSwxLDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMCwzMiwwLDY1LDE1LDExOCwxMTUsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMzQsMCw2NSwxMywxMTgsMzIsMCwxMTUsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMzQsMCw2NSwxNiwxMTgsMzIsMCwxMTUsMTEsNjMsMCwzMiwwLDY1LDgsMTA2LDMyLDEsNjUsMTY4LDEzNiwxNDEsMTYxLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwxLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNyw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw1NCwyLDAsMzIsMCw2NSwyMCwxMDYsMzIsMSw2NSwyMDcsMTQwLDE2MiwxNDIsNiwxMDYsNTQsMiwwLDExLDE5NSw0LDEsNiwxMjcsMzIsMSwzMiwyLDEwNiwzMyw2LDMyLDAsNjUsMjQsMTA2LDMzLDQsMzIsMCw2NSw0MCwxMDYsNDAsMiwwLDMzLDMsMzIsMCwzMiwwLDQwLDIsMCwzMiwyLDEwNiw1NCwyLDAsMzIsMCw2NSw0LDEwNiwzNCw1LDMyLDUsNDAsMiwwLDMyLDIsNjUsMTYsNzksMzIsMCw0MCwyLDAsNjUsMTYsNzksMTE0LDExNCw1NCwyLDAsMzIsMiwzMiwzLDEwNiw2NSwxNiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwxNiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSw0LDEwNiw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDgsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsMTIsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDQwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSwzMiw2LDY1LDE2LDEwNyw3Nyw0LDY0LDMyLDYsNjUsMTYsMTA3LDMzLDgsMzIsMCw2NSw4LDEwNiw0MCwyLDAsMzMsMiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsMzMsMywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsNSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsMzMsNywzLDY0LDMyLDIsMzIsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMywyLDMyLDMsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDMsMzIsNSwzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw3LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw3LDMyLDgsMzIsMSw2NSw0LDEwNiwzNCwxLDc5LDEzLDAsMTEsMzIsMCw2NSw4LDEwNiwzMiwyLDU0LDIsMCwzMiwwLDY1LDEyLDEwNiwzMiwzLDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiw1LDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiw3LDU0LDIsMCwxMSwzMiwxLDMyLDYsNzMsNCw2NCwzMiw0LDMyLDEsMzIsNiwzMiwxLDEwNywzNCwxLDI1MiwxMCwwLDAsMzIsMCw2NSw0MCwxMDYsMzIsMSw1NCwyLDAsMTEsMTEsOTcsMSwxLDEyNywzMiwwLDY1LDE2LDEwNiw0MCwyLDAsMzMsMSwzMiwwLDY1LDQsMTA2LDQwLDIsMCw0LDEyNywzMiwxLDY1LDEyLDExOSwzMiwwLDY1LDIwLDEwNiw0MCwyLDAsNjUsMTgsMTE5LDEwNiwzMiwwLDY1LDEyLDEwNiw0MCwyLDAsNjUsNywxMTksMTA2LDMyLDAsNjUsOCwxMDYsNDAsMiwwLDY1LDEsMTE5LDEwNiw1LDMyLDEsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDAsNDAsMiwwLDEwNiwzMiwwLDY1LDI0LDEwNiwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMTYsMSwxMSwyNTUsMywyLDMsMTI2LDEsMTI3LDMyLDAsMzIsMSwxMDYsMzMsNiwzMiwxLDY1LDMyLDc5LDQsMTI2LDMyLDYsNjUsMzIsMTA3LDMzLDYsMzIsMiw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCwzMywzLDMyLDIsNjYsMTc3LDE2OSwxNzIsMTkzLDE3MywxODQsMjEyLDE2Niw2MSwxMjUsMzMsNCwzMiwyLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywzLDMyLDQsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNCwzMiwyLDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDIsMzIsNSwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw1LDMyLDYsMzIsMCw2NSw4LDEwNiwzNCwwLDc5LDEzLDAsMTEsMzIsMiw2NiwxMiwxMzcsMzIsNSw2NiwxOCwxMzcsMTI0LDMyLDQsNjYsNywxMzcsMTI0LDMyLDMsNjYsMSwxMzcsMTI0LDMyLDMsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiwyLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDUsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsNSwzMiwyLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI0LDExLDMyLDEsMTczLDEyNCwzMiwwLDMyLDEsNjUsMzEsMTEzLDE2LDYsMTEsMTM0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDIsMyw2NCwzMiwyLDMyLDEsNjUsOCwxMDYsNzksNCw2NCwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMiwwLDEzMyw2NiwyNywxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMywwLDMyLDEsNjUsOCwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDEsNjUsNCwxMDYsMzIsMiw3Nyw0LDY0LDMyLDAsMzIsMSw1MywyLDAsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMjMsMTM3LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI0LDMzLDAsMzIsMSw2NSw0LDEwNiwzMywxLDExLDMsNjQsMzIsMSwzMiwyLDczLDQsNjQsMzIsMCwzMiwxLDQ5LDAsMCw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNiwxMzMsNjYsMTEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjYsMzMsMTM2LDEzMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwzNCwwLDMyLDAsNjYsMjksMTM2LDEzMyw2NiwyNDksMjQzLDIyMSwyNDEsMTUzLDI0NiwxNTMsMTcxLDIyLDEyNiwzNCwwLDMyLDAsNjYsMzIsMTM2LDEzMywxMSw3NywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NiwyMTQsMjM1LDEzMCwyMzgsMjM0LDI1MywxMzcsMjQ1LDIyNCwwLDEyNCw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsMSw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsMSw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsMSw2NiwyNDksMjM0LDIwOCwyMDgsMjMxLDIwMSwxNjEsMjI4LDIyNSwwLDEyNCw1NSwzLDAsMTEsMjQ0LDQsMiwzLDEyNyw0LDEyNiwzMiwxLDMyLDIsMTA2LDMzLDUsMzIsMCw2NSw0MCwxMDYsMzMsNCwzMiwwLDY1LDIwMCwwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDEsMywwLDMyLDIsMTczLDEyNCw1NSwzLDAsMzIsMiwzMiwzLDEwNiw2NSwzMiw3Myw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSwzMiwyLDI1MiwxMCwwLDAsMzIsMCw2NSwyMDAsMCwxMDYsMzIsMiwzMiwzLDEwNiw1NCwyLDAsMTUsMTEsMzIsMyw0LDY0LDMyLDMsMzIsNCwxMDYsMzIsMSw2NSwzMiwzMiwzLDEwNywzNCwyLDI1MiwxMCwwLDAsMzIsMCw2NSw4LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDgsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw2NSwxNiwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDI0LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDIwMCwwLDEwNiw2NSwwLDU0LDIsMCwzMiwxLDMyLDIsMTA2LDMzLDEsMTEsMzIsMSw2NSwzMiwxMDYsMzIsNSw3Nyw0LDY0LDMyLDUsNjUsMzIsMTA3LDMzLDIsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzMsNiwzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzMsNywzMiwwLDY1LDI0LDEwNiw0MSwzLDAsMzMsOCwzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzMsOSwzLDY0LDMyLDYsMzIsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDYsMzIsNywzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw3LDMyLDgsMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOCwzMiw5LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDksMzIsMiwzMiwxLDY1LDgsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDYsNTUsMywwLDMyLDAsNjUsMTYsMTA2LDMyLDcsNTUsMywwLDMyLDAsNjUsMjQsMTA2LDMyLDgsNTUsMywwLDMyLDAsNjUsMzIsMTA2LDMyLDksNTUsMywwLDExLDMyLDEsMzIsNSw3Myw0LDY0LDMyLDQsMzIsMSwzMiw1LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSwxODgsMiwxLDUsMTI2LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMywxLDMyLDAsNDEsMywwLDM0LDIsNjYsMzIsOTAsNCwxMjYsMzIsMCw2NSw4LDEwNiw0MSwzLDAsMzQsMyw2NiwxLDEzNywzMiwwLDY1LDE2LDEwNiw0MSwzLDAsMzQsNCw2Niw3LDEzNywxMjQsMzIsMSw2NiwxMiwxMzcsMzIsMCw2NSwzMiwxMDYsNDEsMywwLDM0LDUsNjYsMTgsMTM3LDEyNCwxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDEsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDEsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMiwxMjQsMzIsMCw2NSw0MCwxMDYsMzIsMiw2NiwzMSwxMzEsMTY3LDE2LDYsMTFdKTthc3luYyBmdW5jdGlvbiB6bih0LGU9e30pe2xldCByPXdyKGUsImZzIiksbj13cihlLCJjaHVua1NpemUiKTtpZihacihuKXx8KG49NjcxMDg4NjQpLG49bG4obiksIWduKHQse2ZzOnJ9KSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoImZwIGlzIG5vdCBhIGZpbGUiKTtsZXQgbz1mdW5jdGlvbigpe2xldCB0LGUscj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24oKXt0PWFyZ3VtZW50c1swXSxlPWFyZ3VtZW50c1sxXX0pKTtyZXR1cm4gci5yZXNvbHZlPXQsci5yZWplY3Q9ZSxyfSgpO3RyeXtsZXR7Y3JlYXRlNjQ6ZX09YXdhaXQgYXN5bmMgZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3R7ZXhwb3J0czp7bWVtOmUseHhoMzI6cix4eGg2NDpuLGluaXQzMjpvLHVwZGF0ZTMyOnUsZGlnZXN0MzI6aSxpbml0NjQ6YSx1cGRhdGU2NDpjLGRpZ2VzdDY0OmZ9fT10O2xldCBzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKTtmdW5jdGlvbiBsKHQscil7aWYoZS5idWZmZXIuYnl0ZUxlbmd0aDx0K3Ipe2NvbnN0IG49TWF0aC5jZWlsKCh0K3ItZS5idWZmZXIuYnl0ZUxlbmd0aCkvNjU1MzYpO2UuZ3JvdyhuKSxzPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyKX19ZnVuY3Rpb24gcCh0LGUscixuLG8sdSl7bCh0KTtjb25zdCBpPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBzLnNldChpKSxyKDAsZSksaS5zZXQocy5zdWJhcnJheSgwLHQpKSx7dXBkYXRlKGUpe2xldCByO3JldHVybiBzLnNldChpKSwic3RyaW5nIj09dHlwZW9mIGU/KGwoMyplLmxlbmd0aCx0KSxyPWIuZW5jb2RlSW50byhlLHMuc3ViYXJyYXkodCkpLndyaXR0ZW4pOihsKGUuYnl0ZUxlbmd0aCx0KSxzLnNldChlLHQpLHI9ZS5ieXRlTGVuZ3RoKSxuKDAsdCxyKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHRoaXN9LGRpZ2VzdDooKT0+KHMuc2V0KGkpLHUobygwKSkpfX1mdW5jdGlvbiBoKHQpe3JldHVybiB0Pj4+MH1jb25zdCB2PTJuKio2NG4tMW47ZnVuY3Rpb24geSh0KXtyZXR1cm4gdCZ2fWNvbnN0IGI9bmV3IFRleHRFbmNvZGVyLGQ9MCxnPTBuO2Z1bmN0aW9uIF8odCxlPWQpe3JldHVybiBsKDMqdC5sZW5ndGgsMCksaChyKDAsYi5lbmNvZGVJbnRvKHQscykud3JpdHRlbixlKSl9ZnVuY3Rpb24gaih0LGU9Zyl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSx5KG4oMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1yZXR1cm57aDMyOl8saDMyVG9TdHJpbmc6KHQsZT1kKT0+Xyh0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCIwIiksaDMyUmF3Oih0LGU9ZCk9PihsKHQuYnl0ZUxlbmd0aCwwKSxzLnNldCh0KSxoKHIoMCx0LmJ5dGVMZW5ndGgsZSkpKSxjcmVhdGUzMjoodD1kKT0+cCg0OCx0LG8sdSxpLGgpLGg2NDpqLGg2NFRvU3RyaW5nOih0LGU9Zyk9PmoodCxlKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKSxoNjRSYXc6KHQsZT1nKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLHkobigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTY0Oih0PWcpPT5wKDg4LHQsYSxjLGYseSl9fSgoYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoeG4pKS5pbnN0YW5jZSl9KCksdT1lKCksaT1yLmNyZWF0ZVJlYWRTdHJlYW0odCx7aGlnaFdhdGVyTWFyazpufSk7aS5vbigiZGF0YSIsKHQ9Pnt1LnVwZGF0ZSh0KX0pKSxpLm9uKCJlbmQiLCgoKT0+e2xldCB0PXUuZGlnZXN0KCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCIwIik7by5yZXNvbHZlKHQpfSkpLGkub24oImVycm9yIixvLnJlamVjdCl9Y2F0Y2godCl7by5yZWplY3QodC50b1N0cmluZygpKX1yZXR1cm4gb31mdW5jdGlvbiBQbih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gRW4odCxyPXt9KXtyZXR1cm4gem4odCxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgcj1udWxsIT1hcmd1bWVudHNbZV0/YXJndW1lbnRzW2VdOnt9O2UlMj9QbihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe0FuKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpQbihPYmplY3QocikpLmZvckVhY2goKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pKX1yZXR1cm4gdH0oe2ZzOmV9LHIpKX1sZXQgY2hlY2tUb3RhbEhhc2g9YXN5bmMocixuLG8sdSk9PntsZXQgaT10LmpvaW4odSxvKSxhPSExO2lmKGE9X24oaSksIVpyKHIpKXtyZXR1cm57ZXJyb3I6ImludmFsaWQgZmlsZVNpemUgaW4gcGF5bG9hZCJ9fWxldCBjPSExO2lmKGEpe2M9cj09PWUuc3RhdFN5bmMoaSkuc2l6ZX1sZXQgZj0hMTthJiZjJiZhd2FpdCBFbihpKS50aGVuKCh0PT57Zj1vPT09dH0pKS5jYXRjaCgodD0+e2NvbnNvbGUubG9nKHQpLGNvbnNvbGUubG9nKCJmc0lzRmlsZShwYXRoRmlsZSkiLGksX24oaSkpLGY9ITF9KSk7bGV0IHM9ZnVuY3Rpb24ocixuPTEpe3JldHVybiB3bihyLG4se3BhdGg6dCxmczplfSl9KHUpLGw9W107aXQocywodD0+e2xldCByPXQubmFtZS5pbmRleE9mKGAke299X2ApPj0wLHU9ZS5zdGF0U3luYyh0LnBhdGgpLnNpemU9PT1uO2lmKHImJnUpe2xldCBlPVlyKHQubmFtZSxgJHtvfV9gKSxyPShhPW51bGw9PShpPWUpPzA6aS5sZW5ndGgpP2lbYS0xXTp2b2lkIDA7aWYoIWZ1bmN0aW9uKHQpe3JldHVybiEhcG4odCkmJmRuKHQpPj0wfShyKSl0aHJvdyBuZXcgRXJyb3IoYGNhbiBub3QgcGFyc2UgaW5kZXggaW4gdi5uYW1lWyR7dC5uYW1lfV1gKTtyPWRuKHIpLGwucHVzaChyKX12YXIgaSxhfSkpO2xldCBwPWVlKGwpPjA7cmV0dXJue3BhdGg6aSxiQWxsRXhpc3Q6YSxiQWxsU2l6ZTpjLGJBbGxIYXNoOmYsYlNsczpwLHNsa3M6bH19OwoKCmxldCBpbnN0YW5jZSA9IG51bGwKZnVuY3Rpb24gaW5pdChpbnB1dCl7CgogICAgLy9pbml0CiAgICBsZXQgcgogICAgCiAgICAgICAgciA9IHsKICAgICAgICAgICAgbWFpbjogY2hlY2tUb3RhbEhhc2gKICAgICAgICB9CiAgICAgICAgCgogICAgLy9vbgogICAgCgogICAgLy9zYXZlCiAgICBpbnN0YW5jZSA9IHIKCn0KCmZ1bmN0aW9uIHNlbmRNZXNzYWdlKGRhdGEpIHsKICAgIAogICAgICAgIHBhcmVudFBvcnQucG9zdE1lc3NhZ2UoZGF0YSkKICAgICAgICAKfQoKYXN5bmMgZnVuY3Rpb24gcnVuKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcnVuJyxkYXRhKQoKICAgIC8vbW9kZQogICAgbGV0IG1vZGUgPSBkYXRhLm1vZGUKCiAgICAvL2NoZWNrCiAgICBpZihtb2RlICE9PSAnaW5pdCcgJiYgbW9kZSAhPT0gJ2NhbGwnKXsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICAvL2luaXQKICAgIGlmKG1vZGUgPT09ICdpbml0Jyl7CiAgICAgICAgCiAgICAgICAgdHJ5ewoKICAgICAgICAgICAgLy90eXBlCiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YS50eXBlCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKICAgIAogICAgICAgICAgICAvL2luc3RhbmNlCiAgICAgICAgICAgIGlmKHR5cGUgPT09ICdmdW5jdGlvbicpewogICAgICAgICAgICAgICAgaW5pdCguLi5pbnB1dCkKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICdvYmplY3QnKXsKICAgICAgICAgICAgICAgIGluc3RhbmNlID0gY2hlY2tUb3RhbEhhc2gKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXJyKXsKICAgICAgICAKICAgICAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICAgICAgbW9kZTogJ2VtaXQnLAogICAgICAgICAgICAgICAgZXZOYW1lOiAnZXJyb3InLAogICAgICAgICAgICAgICAgbXNnOiBlcnIsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgICAgICB9CiAgICAgICAgICAgIAogICAgfQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgPT09ICdjYWxsJyl7CiAgICAgICAgbGV0IHN0YXRlID0gJycKICAgICAgICBsZXQgbXNnID0gbnVsbAoKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL2Z1bgogICAgICAgICAgICBsZXQgZnVuID0gaW5zdGFuY2VbZGF0YS5mdW5dCgogICAgICAgICAgICAvL2lucHV0CiAgICAgICAgICAgIGxldCBpbnB1dCA9IGRhdGEuaW5wdXQKCiAgICAgICAgICAgIC8vZXhlYwogICAgICAgICAgICBhd2FpdCBmdW4oLi4uaW5wdXQpCiAgICAgICAgICAgICAgICAudGhlbigoc3VjKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J3N1Y2Nlc3MnCiAgICAgICAgICAgICAgICAgICAgbXNnPXN1YwogICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgc3RhdGU9J2Vycm9yJwogICAgICAgICAgICAgICAgICAgIG1zZz1lcnIKICAgICAgICAgICAgICAgIH0pCgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgICAgICBzdGF0ZSA9ICdlcnJvcicKICAgICAgICAgICAgbXNnID0gZXJyCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vc2VuZE1lc3NhZ2UKICAgICAgICBsZXQgcmVzID0gewogICAgICAgICAgICBtb2RlOiAncmV0dXJuJywKICAgICAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgICAgIGZ1bjogZGF0YS5mdW4sCiAgICAgICAgICAgIHN0YXRlLAogICAgICAgICAgICBtc2csCiAgICAgICAgfQogICAgICAgIHNlbmRNZXNzYWdlKHJlcykKCiAgICB9Cgp9CgpmdW5jdGlvbiByZWN2TWVzc2FnZShkYXRhKSB7CiAgICAvLyBjb25zb2xlLmxvZygnaW5uZXIgd29ya2VyIHJlY3Y6JywgZGF0YSkKCiAgICAvL2RhdGFSZWN2CiAgICBsZXQgZGF0YVJlY3YgPSBkYXRhCgogICAgLy9ydW4KICAgIHJ1bihkYXRhUmVjdikKCn0KCgogICAgICAgIHBhcmVudFBvcnQub24oJ21lc3NhZ2UnLCByZWN2TWVzc2FnZSkKICAgICAgICAKCnRyeXsKICAgIHByb2Nlc3Mub24oJ3VuaGFuZGxlZFJlamVjdGlvbicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmNhdWdodEV4Y2VwdGlvbicsIGVycikKICAgIH0pCiAgICBwcm9jZXNzLm9uKCd1bmNhdWdodEV4Y2VwdGlvbk1vbml0b3InLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIGVycikKICAgIH0pCn0KY2F0Y2goZXJyKXt9Cgo=",Buffer.from(I,"base64").toString("utf8"));var I;function D(){let L=new w,I=function(s){try{return new M.Worker(s,{eval:!0})}catch(M){i(M)}}(s);if(!I)return i("invalid worker"),null;function D(){let M=function(){let M,s,w=new Promise((function(){M=arguments[0],s=arguments[1]}));return w.resolve=M,w.reject=s,w}(),s=function(){let M=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,s=[],w="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),L=w.length;for(let I=0;I<M;I++)s[I]=w[0|Math.random()*L];return s.join("")}(),w={mode:"call",id:s,fun:"main",input:[...arguments]};return I.postMessage(w),L.once(s,(s=>{"success"===s.state?M.resolve(s.msg):M.reject(s.msg)})),M}function i(M){L.emit("error",M)}return I.on("message",(function(M){let s=M,w=s.mode;"emit"!==w&&"return"!==w||("emit"===w&&L.emit(s.evName,s.msg),"return"===w&&L.emit(s.id,s))})),I.on("error",i),I.on("exit",(M=>{1!==M&&i("exit code["+M+"] !== 1")})),function(){let M={mode:"init",type:"function",input:[...arguments]};I.postMessage(M)}([...arguments]),L.main=D,L.main=D,L.terminate=function(){I?(I.terminate(),I=void 0):i("worker has been terminated")},L}L=async function(){let M=[...arguments],s=D();return await s.main(...M).finally((()=>{s.terminate()}))}}();try{process.on("unhandledRejection",(M=>{console.log("outer:unhandledRejection",M)})),process.on("uncaughtException",(M=>{console.log("outer:uncaughtException",M)})),process.on("uncaughtExceptionMonitor",(M=>{console.log("outer:uncaughtExceptionMonitor",M)}))}catch(M){}return L}(M)}({get exports(){return s},set exports(M){s=M}});var w=s,L={};!function(M,s){M.exports=function(){const M="function"==typeof Buffer,s="function"==typeof TextDecoder?new TextDecoder:void 0,w=(M=>{let s={};return M.forEach(((M,w)=>s[M]=w)),s})(("function"==typeof TextEncoder&&new TextEncoder,Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="))),L=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,I=String.fromCharCode.bind(String),D="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):M=>new Uint8Array(Array.prototype.slice.call(M,0)),i=M=>M.replace(/[^A-Za-z0-9\+\/]/g,""),d=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,y=M=>{switch(M.length){case 4:var s=((7&M.charCodeAt(0))<<18|(63&M.charCodeAt(1))<<12|(63&M.charCodeAt(2))<<6|63&M.charCodeAt(3))-65536;return I(55296+(s>>>10))+I(56320+(1023&s));case 3:return I((15&M.charCodeAt(0))<<12|(63&M.charCodeAt(1))<<6|63&M.charCodeAt(2));default:return I((31&M.charCodeAt(0))<<6|63&M.charCodeAt(1))}},l=M=>M.replace(d,y),Z=M=>{if(M=M.replace(/\s+/g,""),!L.test(M))throw new TypeError("malformed base64.");M+="==".slice(2-(3&M.length));let s,D,i,d="";for(let L=0;L<M.length;)s=w[M.charAt(L++)]<<18|w[M.charAt(L++)]<<12|(D=w[M.charAt(L++)])<<6|(i=w[M.charAt(L++)]),d+=64===D?I(s>>16&255):64===i?I(s>>16&255,s>>8&255):I(s>>16&255,s>>8&255,255&s);return d},c="function"==typeof atob?M=>atob(i(M)):M?M=>Buffer.from(M,"base64").toString("binary"):Z,C=M?M=>D(Buffer.from(M,"base64")):M=>D(c(M).split("").map((M=>M.charCodeAt(0)))),m=M?M=>Buffer.from(M,"base64").toString("utf8"):s?M=>s.decode(C(M)):M=>l(c(M)),N=M=>i(M.replace(/[-_]/g,(M=>"-"==M?"+":"/"))),x=M=>m(N(M)),b=x;var X={};!function(M){var s=Object.prototype.hasOwnProperty,w="~";function L(){}function I(M,s,w){this.fn=M,this.context=s,this.once=w||!1}function D(M,s,L,D,i){if("function"!=typeof L)throw new TypeError("The listener must be a function");var d=new I(L,D||M,i),y=w?w+s:s;return M._events[y]?M._events[y].fn?M._events[y]=[M._events[y],d]:M._events[y].push(d):(M._events[y]=d,M._eventsCount++),M}function i(M,s){0==--M._eventsCount?M._events=new L:delete M._events[s]}function d(){this._events=new L,this._eventsCount=0}Object.create&&(L.prototype=Object.create(null),(new L).__proto__||(w=!1)),d.prototype.eventNames=function(){var M,L,I=[];if(0===this._eventsCount)return I;for(L in M=this._events)s.call(M,L)&&I.push(w?L.slice(1):L);return Object.getOwnPropertySymbols?I.concat(Object.getOwnPropertySymbols(M)):I},d.prototype.listeners=function(M){var s=w?w+M:M,L=this._events[s];if(!L)return[];if(L.fn)return[L.fn];for(var I=0,D=L.length,i=new Array(D);I<D;I++)i[I]=L[I].fn;return i},d.prototype.listenerCount=function(M){var s=w?w+M:M,L=this._events[s];return L?L.fn?1:L.length:0},d.prototype.emit=function(M,s,L,I,D,i){var d=w?w+M:M;if(!this._events[d])return!1;var y,l,Z=this._events[d],c=arguments.length;if(Z.fn){switch(Z.once&&this.removeListener(M,Z.fn,void 0,!0),c){case 1:return Z.fn.call(Z.context),!0;case 2:return Z.fn.call(Z.context,s),!0;case 3:return Z.fn.call(Z.context,s,L),!0;case 4:return Z.fn.call(Z.context,s,L,I),!0;case 5:return Z.fn.call(Z.context,s,L,I,D),!0;case 6:return Z.fn.call(Z.context,s,L,I,D,i),!0}for(l=1,y=new Array(c-1);l<c;l++)y[l-1]=arguments[l];Z.fn.apply(Z.context,y)}else{var C,m=Z.length;for(l=0;l<m;l++)switch(Z[l].once&&this.removeListener(M,Z[l].fn,void 0,!0),c){case 1:Z[l].fn.call(Z[l].context);break;case 2:Z[l].fn.call(Z[l].context,s);break;case 3:Z[l].fn.call(Z[l].context,s,L);break;case 4:Z[l].fn.call(Z[l].context,s,L,I);break;default:if(!y)for(C=1,y=new Array(c-1);C<c;C++)y[C-1]=arguments[C];Z[l].fn.apply(Z[l].context,y)}}return!0},d.prototype.on=function(M,s,w){return D(this,M,s,w,!1)},d.prototype.once=function(M,s,w){return D(this,M,s,w,!0)},d.prototype.removeListener=function(M,s,L,I){var D=w?w+M:M;if(!this._events[D])return this;if(!s)return i(this,D),this;var d=this._events[D];if(d.fn)d.fn!==s||I&&!d.once||L&&d.context!==L||i(this,D);else{for(var y=0,l=[],Z=d.length;y<Z;y++)(d[y].fn!==s||I&&!d[y].once||L&&d[y].context!==L)&&l.push(d[y]);l.length?this._events[D]=1===l.length?l[0]:l:i(this,D)}return this},d.prototype.removeAllListeners=function(M){var s;return M?(s=w?w+M:M,this._events[s]&&i(this,s)):(this._events=new L,this._eventsCount=0),this},d.prototype.off=d.prototype.removeListener,d.prototype.addListener=d.prototype.on,d.prefixed=w,d.EventEmitter=d,M.exports=d}({get exports(){return X},set exports(M){X=M}});var T=X;let Y;!function(){if("browser"!=("undefined"!=typeof window&&void 0!==window.document?"browser":"nodejs"))return null;let M=b("CgoKInVzZSBzdHJpY3QiO3ZhciB0PXJlcXVpcmUoInBhdGgiKSxlPXJlcXVpcmUoImZzIik7ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8biYmITEhPT1lKHRbcl0scix0KTspO3JldHVybiB0fXZhciBuLG89ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbz0tMSx1PU9iamVjdCh0KSxpPXIodCksYT1pLmxlbmd0aDthLS07KXt2YXIgYz1pW24/YTorK29dO2lmKCExPT09ZSh1W2NdLGMsdSkpYnJlYWt9cmV0dXJuIHR9O3ZhciB1PSJvYmplY3QiPT10eXBlb2YgZ2xvYmFsJiZnbG9iYWwmJmdsb2JhbC5PYmplY3Q9PT1PYmplY3QmJmdsb2JhbCxpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsYT11fHxpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGM9YS5TeW1ib2wsZj1PYmplY3QucHJvdG90eXBlLHM9Zi5oYXNPd25Qcm9wZXJ0eSxsPWYudG9TdHJpbmcscD1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO3ZhciBoPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7dmFyIHY9IltvYmplY3QgTnVsbF0iLHk9IltvYmplY3QgVW5kZWZpbmVkXSIsYj1jP2MudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIGQodCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwPT09dD95OnY6YiYmYiBpbiBPYmplY3QodCk/ZnVuY3Rpb24odCl7dmFyIGU9cy5jYWxsKHQscCkscj10W3BdO3RyeXt0W3BdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh0KXt9dmFyIG89bC5jYWxsKHQpO3JldHVybiBuJiYoZT90W3BdPXI6ZGVsZXRlIHRbcF0pLG99KHQpOmZ1bmN0aW9uKHQpe3JldHVybiBoLmNhbGwodCl9KHQpfWZ1bmN0aW9uIGcodCl7cmV0dXJuIG51bGwhPXQmJiJvYmplY3QiPT10eXBlb2YgdH1mdW5jdGlvbiBfKHQpe3JldHVybiBnKHQpJiYiW29iamVjdCBBcmd1bWVudHNdIj09ZCh0KX12YXIgaj1PYmplY3QucHJvdG90eXBlLG09ai5oYXNPd25Qcm9wZXJ0eSx3PWoucHJvcGVydHlJc0VudW1lcmFibGUsTz1fKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk/XzpmdW5jdGlvbih0KXtyZXR1cm4gZyh0KSYmbS5jYWxsKHQsImNhbGxlZSIpJiYhdy5jYWxsKHQsImNhbGxlZSIpfSxTPUFycmF5LmlzQXJyYXk7dmFyIEE9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyx4PUEmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSx6PXgmJnguZXhwb3J0cz09PUE/YS5CdWZmZXI6dm9pZCAwLFA9KHo/ei5pc0J1ZmZlcjp2b2lkIDApfHxmdW5jdGlvbigpe3JldHVybiExfSxFPTkwMDcxOTkyNTQ3NDA5OTEsaz0vXig/OjB8WzEtOV1cZCopJC87ZnVuY3Rpb24gJCh0LGUpe3ZhciByPXR5cGVvZiB0O3JldHVybiEhKGU9bnVsbD09ZT9FOmUpJiYoIm51bWJlciI9PXJ8fCJzeW1ib2wiIT1yJiZrLnRlc3QodCkpJiZ0Pi0xJiZ0JTE9PTAmJnQ8ZX12YXIgRj05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIEwodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiZ0Pi0xJiZ0JTE9PTAmJnQ8PUZ9dmFyIFQ9e307VFsiW29iamVjdCBGbG9hdDMyQXJyYXldIl09VFsiW29iamVjdCBGbG9hdDY0QXJyYXldIl09VFsiW29iamVjdCBJbnQ4QXJyYXldIl09VFsiW29iamVjdCBJbnQxNkFycmF5XSJdPVRbIltvYmplY3QgSW50MzJBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQ4QXJyYXldIl09VFsiW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0iXT1UWyJbb2JqZWN0IFVpbnQxNkFycmF5XSJdPVRbIltvYmplY3QgVWludDMyQXJyYXldIl09ITAsVFsiW29iamVjdCBBcmd1bWVudHNdIl09VFsiW29iamVjdCBBcnJheV0iXT1UWyJbb2JqZWN0IEFycmF5QnVmZmVyXSJdPVRbIltvYmplY3QgQm9vbGVhbl0iXT1UWyJbb2JqZWN0IERhdGFWaWV3XSJdPVRbIltvYmplY3QgRGF0ZV0iXT1UWyJbb2JqZWN0IEVycm9yXSJdPVRbIltvYmplY3QgRnVuY3Rpb25dIl09VFsiW29iamVjdCBNYXBdIl09VFsiW29iamVjdCBOdW1iZXJdIl09VFsiW29iamVjdCBPYmplY3RdIl09VFsiW29iamVjdCBSZWdFeHBdIl09VFsiW29iamVjdCBTZXRdIl09VFsiW29iamVjdCBTdHJpbmddIl09VFsiW29iamVjdCBXZWFrTWFwXSJdPSExO3ZhciBELEk9Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiZleHBvcnRzJiYhZXhwb3J0cy5ub2RlVHlwZSYmZXhwb3J0cyxNPUkmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUmJiFtb2R1bGUubm9kZVR5cGUmJm1vZHVsZSxOPU0mJk0uZXhwb3J0cz09PUkmJnUucHJvY2VzcyxSPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PU0mJk0ucmVxdWlyZSYmTS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIHR8fE4mJk4uYmluZGluZyYmTi5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKSxVPVImJlIuaXNUeXBlZEFycmF5LEI9VT8oRD1VLGZ1bmN0aW9uKHQpe3JldHVybiBEKHQpfSk6ZnVuY3Rpb24odCl7cmV0dXJuIGcodCkmJkwodC5sZW5ndGgpJiYhIVRbZCh0KV19LEM9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXKHQsZSl7dmFyIHI9Uyh0KSxuPSFyJiZPKHQpLG89IXImJiFuJiZQKHQpLHU9IXImJiFuJiYhbyYmQih0KSxpPXJ8fG58fG98fHUsYT1pP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49QXJyYXkodCk7KytyPHQ7KW5bcl09ZShyKTtyZXR1cm4gbn0odC5sZW5ndGgsU3RyaW5nKTpbXSxjPWEubGVuZ3RoO2Zvcih2YXIgZiBpbiB0KSFlJiYhQy5jYWxsKHQsZil8fGkmJigibGVuZ3RoIj09Znx8byYmKCJvZmZzZXQiPT1mfHwicGFyZW50Ij09Zil8fHUmJigiYnVmZmVyIj09Znx8ImJ5dGVMZW5ndGgiPT1mfHwiYnl0ZU9mZnNldCI9PWYpfHwkKGYsYykpfHxhLnB1c2goZik7cmV0dXJuIGF9dmFyIHE9T2JqZWN0LnByb3RvdHlwZTt2YXIgVj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gdChlKHIpKX19KE9iamVjdC5rZXlzLE9iamVjdCksRz1WLEg9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBKKHQpe2lmKHI9KGU9dCkmJmUuY29uc3RydWN0b3IsZSE9PSgiZnVuY3Rpb24iPT10eXBlb2YgciYmci5wcm90b3R5cGV8fHEpKXJldHVybiBHKHQpO3ZhciBlLHIsbj1bXTtmb3IodmFyIG8gaW4gT2JqZWN0KHQpKUguY2FsbCh0LG8pJiYiY29uc3RydWN0b3IiIT1vJiZuLnB1c2gobyk7cmV0dXJuIG59ZnVuY3Rpb24gSyh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gbnVsbCE9dCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX12YXIgUT0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsWD0iW29iamVjdCBGdW5jdGlvbl0iLFk9IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIixaPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gdHQodCl7aWYoIUsodCkpcmV0dXJuITE7dmFyIGU9ZCh0KTtyZXR1cm4gZT09WHx8ZT09WXx8ZT09UXx8ZT09Wn1mdW5jdGlvbiBldCh0KXtyZXR1cm4gbnVsbCE9dCYmTCh0Lmxlbmd0aCkmJiF0dCh0KX1mdW5jdGlvbiBydCh0KXtyZXR1cm4gZXQodCk/Vyh0KTpKKHQpfXZhciBudD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2lmKG51bGw9PXIpcmV0dXJuIHI7aWYoIWV0KHIpKXJldHVybiB0KHIsbik7Zm9yKHZhciBvPXIubGVuZ3RoLHU9ZT9vOi0xLGk9T2JqZWN0KHIpOyhlP3UtLTorK3U8bykmJiExIT09bihpW3VdLHUsaSk7KTtyZXR1cm4gcn19KChmdW5jdGlvbih0LGUpe3JldHVybiB0JiZvKHQsZSxydCl9KSksb3Q9bnQ7ZnVuY3Rpb24gdXQodCl7cmV0dXJuIHR9ZnVuY3Rpb24gaXQodCxlKXt2YXIgbjtyZXR1cm4oUyh0KT9yOm90KSh0LCJmdW5jdGlvbiI9PXR5cGVvZihuPWUpP246dXQpfXZhciBhdCxjdD1hWyJfX2NvcmUtanNfc2hhcmVkX18iXSxmdD0oYXQ9L1teLl0rJC8uZXhlYyhjdCYmY3Qua2V5cyYmY3Qua2V5cy5JRV9QUk9UT3x8IiIpKT8iU3ltYm9sKHNyYylfMS4iK2F0OiIiO3ZhciBzdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7ZnVuY3Rpb24gbHQodCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiBzdC5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn12YXIgcHQ9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8saHQ9RnVuY3Rpb24ucHJvdG90eXBlLHZ0PU9iamVjdC5wcm90b3R5cGUseXQ9aHQudG9TdHJpbmcsYnQ9dnQuaGFzT3duUHJvcGVydHksZHQ9UmVnRXhwKCJeIit5dC5jYWxsKGJ0KS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiBndCh0KXtyZXR1cm4hKCFLKHQpfHxmdW5jdGlvbih0KXtyZXR1cm4hIWZ0JiZmdCBpbiB0fSh0KSkmJih0dCh0KT9kdDpwdCkudGVzdChsdCh0KSl9ZnVuY3Rpb24gX3QodCxlKXt2YXIgcj1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10P3ZvaWQgMDp0W2VdfSh0LGUpO3JldHVybiBndChyKT9yOnZvaWQgMH12YXIganQ9X3QoYSwiRGF0YVZpZXciKSxtdD1fdChhLCJNYXAiKSx3dD1fdChhLCJQcm9taXNlIiksT3Q9X3QoYSwiU2V0IiksU3Q9X3QoYSwiV2Vha01hcCIpLEF0PSJbb2JqZWN0IE1hcF0iLHh0PSJbb2JqZWN0IFByb21pc2VdIix6dD0iW29iamVjdCBTZXRdIixQdD0iW29iamVjdCBXZWFrTWFwXSIsRXQ9IltvYmplY3QgRGF0YVZpZXddIixrdD1sdChqdCksJHQ9bHQobXQpLEZ0PWx0KHd0KSxMdD1sdChPdCksVHQ9bHQoU3QpLER0PWQ7KGp0JiZEdChuZXcganQobmV3IEFycmF5QnVmZmVyKDEpKSkhPUV0fHxtdCYmRHQobmV3IG10KSE9QXR8fHd0JiZEdCh3dC5yZXNvbHZlKCkpIT14dHx8T3QmJkR0KG5ldyBPdCkhPXp0fHxTdCYmRHQobmV3IFN0KSE9UHQpJiYoRHQ9ZnVuY3Rpb24odCl7dmFyIGU9ZCh0KSxyPSJbb2JqZWN0IE9iamVjdF0iPT1lP3QuY29uc3RydWN0b3I6dm9pZCAwLG49cj9sdChyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGt0OnJldHVybiBFdDtjYXNlICR0OnJldHVybiBBdDtjYXNlIEZ0OnJldHVybiB4dDtjYXNlIEx0OnJldHVybiB6dDtjYXNlIFR0OnJldHVybiBQdH1yZXR1cm4gZX0pO3ZhciBJdD1EdCxNdD0iW29iamVjdCBTdHJpbmddIjtmdW5jdGlvbiBOdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fXZhciBSdD1OdCgibGVuZ3RoIiksVXQ9UmVnRXhwKCJbXFx1MjAwZFxcdWQ4MDAtXFx1ZGZmZlxcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZlxcdWZlMGVcXHVmZTBmXSIpO2Z1bmN0aW9uIEJ0KHQpe3JldHVybiBVdC50ZXN0KHQpfXZhciBDdD0iXFx1ZDgwMC1cXHVkZmZmIixXdD0iWyIrQ3QrIl0iLHF0PSJbXFx1MDMwMC1cXHUwMzZmXFx1ZmUyMC1cXHVmZTJmXFx1MjBkMC1cXHUyMGZmXSIsVnQ9IlxcdWQ4M2NbXFx1ZGZmYi1cXHVkZmZmXSIsR3Q9IlteIitDdCsiXSIsSHQ9Iig/OlxcdWQ4M2NbXFx1ZGRlNi1cXHVkZGZmXSl7Mn0iLEp0PSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixLdD0iKD86IitxdCsifCIrVnQrIikiKyI/IixRdD0iW1xcdWZlMGVcXHVmZTBmXT8iLFh0PVF0K0t0KygiKD86XFx1MjAwZCg/OiIrW0d0LEh0LEp0XS5qb2luKCJ8IikrIikiK1F0K0t0KyIpKiIpLFl0PSIoPzoiK1tHdCtxdCsiPyIscXQsSHQsSnQsV3RdLmpvaW4oInwiKSsiKSIsWnQ9UmVnRXhwKFZ0KyIoPz0iK1Z0KyIpfCIrWXQrWHQsImciKTtmdW5jdGlvbiB0ZSh0KXtyZXR1cm4gQnQodCk/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVp0Lmxhc3RJbmRleD0wO1p0LnRlc3QodCk7KSsrZTtyZXR1cm4gZX0odCk6UnQodCl9ZnVuY3Rpb24gZWUodCl7aWYobnVsbD09dClyZXR1cm4gMDtpZihldCh0KSlyZXR1cm4ic3RyaW5nIj09dHlwZW9mKGU9dCl8fCFTKGUpJiZnKGUpJiZkKGUpPT1NdD90ZSh0KTp0Lmxlbmd0aDt2YXIgZSxyPUl0KHQpO3JldHVybiJbb2JqZWN0IE1hcF0iPT1yfHwiW29iamVjdCBTZXRdIj09cj90LnNpemU6Sih0KS5sZW5ndGh9ZnVuY3Rpb24gcmUodCxlKXtmb3IodmFyIHI9LTEsbj1udWxsPT10PzA6dC5sZW5ndGgsbz1BcnJheShuKTsrK3I8bjspb1tyXT1lKHRbcl0scix0KTtyZXR1cm4gb31mdW5jdGlvbiBuZSh0LGUpe3JldHVybiB0PT09ZXx8dCE9dCYmZSE9ZX1mdW5jdGlvbiBvZSh0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS07KWlmKG5lKHRbcl1bMF0sZSkpcmV0dXJuIHI7cmV0dXJuLTF9dmFyIHVlPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZnVuY3Rpb24gaWUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19aWUucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH0saWUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLHI9b2UoZSx0KTtyZXR1cm4hKHI8MCkmJihyPT1lLmxlbmd0aC0xP2UucG9wKCk6dWUuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITApfSxpZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1vZShlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19LGllLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIG9lKHRoaXMuX19kYXRhX18sdCk+LTF9LGllLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fLG49b2Uocix0KTtyZXR1cm4gbjwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW3QsZV0pKTpyW25dWzFdPWUsdGhpc307dmFyIGFlPV90KE9iamVjdCwiY3JlYXRlIik7dmFyIGNlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIGZlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gc2UodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19ZnVuY3Rpb24gbGUodCxlKXt2YXIgcixuLG89dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShuPXR5cGVvZihyPWUpKXx8Im51bWJlciI9PW58fCJzeW1ib2wiPT1ufHwiYm9vbGVhbiI9PW4/Il9fcHJvdG9fXyIhPT1yOm51bGw9PT1yKT9vWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOm8ubWFwfWZ1bmN0aW9uIHBlKHQpe3ZhciBlPS0xLHI9bnVsbD09dD8wOnQubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7KytlPHI7KXt2YXIgbj10W2VdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXNlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189YWU/YWUobnVsbCk6e30sdGhpcy5zaXplPTB9LHNlLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9LHNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztpZihhZSl7dmFyIHI9ZVt0XTtyZXR1cm4iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI9PT1yP3ZvaWQgMDpyfXJldHVybiBjZS5jYWxsKGUsdCk/ZVt0XTp2b2lkIDB9LHNlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fX2RhdGFfXztyZXR1cm4gYWU/dm9pZCAwIT09ZVt0XTpmZS5jYWxsKGUsdCl9LHNlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPWFlJiZ2b2lkIDA9PT1lPyJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjplLHRoaXN9LHBlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuc2l6ZT0wLHRoaXMuX19kYXRhX189e2hhc2g6bmV3IHNlLG1hcDpuZXcobXR8fGllKSxzdHJpbmc6bmV3IHNlfX0scGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXt2YXIgZT1sZSh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfSxwZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBsZSh0aGlzLHQpLmdldCh0KX0scGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gbGUodGhpcyx0KS5oYXModCl9LHBlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1sZSh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfTtmdW5jdGlvbiBoZSh0KXt2YXIgZT10aGlzLl9fZGF0YV9fPW5ldyBpZSh0KTt0aGlzLnNpemU9ZS5zaXplfWhlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19kYXRhX189bmV3IGllLHRoaXMuc2l6ZT0wfSxoZS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1lLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplPWUuc2l6ZSxyfSxoZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9fZGF0YV9fLmdldCh0KX0saGUucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5oYXModCl9LGhlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBpZSl7dmFyIG49ci5fX2RhdGFfXztpZighbXR8fG4ubGVuZ3RoPDE5OSlyZXR1cm4gbi5wdXNoKFt0LGVdKSx0aGlzLnNpemU9KytyLnNpemUsdGhpcztyPXRoaXMuX19kYXRhX189bmV3IHBlKG4pfXJldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc307ZnVuY3Rpb24gdmUodCl7dmFyIGU9LTEscj1udWxsPT10PzA6dC5sZW5ndGg7Zm9yKHRoaXMuX19kYXRhX189bmV3IHBlOysrZTxyOyl0aGlzLmFkZCh0W2VdKX1mdW5jdGlvbiB5ZSh0LGUpe2Zvcih2YXIgcj0tMSxuPW51bGw9PXQ/MDp0Lmxlbmd0aDsrK3I8bjspaWYoZSh0W3JdLHIsdCkpcmV0dXJuITA7cmV0dXJuITF9dmUucHJvdG90eXBlLmFkZD12ZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQodCwiX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIpLHRoaXN9LHZlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKHQpfTt2YXIgYmU9MSxkZT0yO2Z1bmN0aW9uIGdlKHQsZSxyLG4sbyx1KXt2YXIgaT1yJmJlLGE9dC5sZW5ndGgsYz1lLmxlbmd0aDtpZihhIT1jJiYhKGkmJmM+YSkpcmV0dXJuITE7dmFyIGY9dS5nZXQodCkscz11LmdldChlKTtpZihmJiZzKXJldHVybiBmPT1lJiZzPT10O3ZhciBsPS0xLHA9ITAsaD1yJmRlP25ldyB2ZTp2b2lkIDA7Zm9yKHUuc2V0KHQsZSksdS5zZXQoZSx0KTsrK2w8YTspe3ZhciB2PXRbbF0seT1lW2xdO2lmKG4pdmFyIGI9aT9uKHksdixsLGUsdCx1KTpuKHYseSxsLHQsZSx1KTtpZih2b2lkIDAhPT1iKXtpZihiKWNvbnRpbnVlO3A9ITE7YnJlYWt9aWYoaCl7aWYoIXllKGUsKGZ1bmN0aW9uKHQsZSl7aWYoaT1lLCFoLmhhcyhpKSYmKHY9PT10fHxvKHYsdCxyLG4sdSkpKXJldHVybiBoLnB1c2goZSk7dmFyIGl9KSkpe3A9ITE7YnJlYWt9fWVsc2UgaWYodiE9PXkmJiFvKHYseSxyLG4sdSkpe3A9ITE7YnJlYWt9fXJldHVybiB1LmRlbGV0ZSh0KSx1LmRlbGV0ZShlKSxwfXZhciBfZT1hLlVpbnQ4QXJyYXk7ZnVuY3Rpb24gamUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQsbil7clsrK2VdPVtuLHRdfSkpLHJ9ZnVuY3Rpb24gbWUodCl7dmFyIGU9LTEscj1BcnJheSh0LnNpemUpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JbKytlXT10fSkpLHJ9dmFyIHdlPTEsT2U9MixTZT0iW29iamVjdCBCb29sZWFuXSIsQWU9IltvYmplY3QgRGF0ZV0iLHhlPSJbb2JqZWN0IEVycm9yXSIsemU9IltvYmplY3QgTWFwXSIsUGU9IltvYmplY3QgTnVtYmVyXSIsRWU9IltvYmplY3QgUmVnRXhwXSIsa2U9IltvYmplY3QgU2V0XSIsJGU9IltvYmplY3QgU3RyaW5nXSIsRmU9IltvYmplY3QgU3ltYm9sXSIsTGU9IltvYmplY3QgQXJyYXlCdWZmZXJdIixUZT0iW29iamVjdCBEYXRhVmlld10iLERlPWM/Yy5wcm90b3R5cGU6dm9pZCAwLEllPURlP0RlLnZhbHVlT2Y6dm9pZCAwO2Z1bmN0aW9uIE1lKHQsZSl7Zm9yKHZhciByPS0xLG49bnVsbD09dD8wOnQubGVuZ3RoLG89MCx1PVtdOysrcjxuOyl7dmFyIGk9dFtyXTtlKGkscix0KSYmKHVbbysrXT1pKX1yZXR1cm4gdX12YXIgTmU9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxSZT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFVlPVJlP2Z1bmN0aW9uKHQpe3JldHVybiBudWxsPT10P1tdOih0PU9iamVjdCh0KSxNZShSZSh0KSwoZnVuY3Rpb24oZSl7cmV0dXJuIE5lLmNhbGwodCxlKX0pKSl9OmZ1bmN0aW9uKCl7cmV0dXJuW119O2Z1bmN0aW9uIEJlKHQpe3JldHVybiBmdW5jdGlvbih0LGUscil7dmFyIG49ZSh0KTtyZXR1cm4gUyh0KT9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsbz10Lmxlbmd0aDsrK3I8bjspdFtvK3JdPWVbcl07cmV0dXJuIHR9KG4scih0KSl9KHQscnQsVWUpfXZhciBDZT0xLFdlPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7dmFyIHFlPTEsVmU9IltvYmplY3QgQXJndW1lbnRzXSIsR2U9IltvYmplY3QgQXJyYXldIixIZT0iW29iamVjdCBPYmplY3RdIixKZT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIEtlKHQsZSxyLG4sbyx1KXt2YXIgaT1TKHQpLGE9UyhlKSxjPWk/R2U6SXQodCksZj1hP0dlOkl0KGUpLHM9KGM9Yz09VmU/SGU6Yyk9PUhlLGw9KGY9Zj09VmU/SGU6Zik9PUhlLHA9Yz09ZjtpZihwJiZQKHQpKXtpZighUChlKSlyZXR1cm4hMTtpPSEwLHM9ITF9aWYocCYmIXMpcmV0dXJuIHV8fCh1PW5ldyBoZSksaXx8Qih0KT9nZSh0LGUscixuLG8sdSk6ZnVuY3Rpb24odCxlLHIsbixvLHUsaSl7c3dpdGNoKHIpe2Nhc2UgVGU6aWYodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fHQuYnl0ZU9mZnNldCE9ZS5ieXRlT2Zmc2V0KXJldHVybiExO3Q9dC5idWZmZXIsZT1lLmJ1ZmZlcjtjYXNlIExlOnJldHVybiEodC5ieXRlTGVuZ3RoIT1lLmJ5dGVMZW5ndGh8fCF1KG5ldyBfZSh0KSxuZXcgX2UoZSkpKTtjYXNlIFNlOmNhc2UgQWU6Y2FzZSBQZTpyZXR1cm4gbmUoK3QsK2UpO2Nhc2UgeGU6cmV0dXJuIHQubmFtZT09ZS5uYW1lJiZ0Lm1lc3NhZ2U9PWUubWVzc2FnZTtjYXNlIEVlOmNhc2UgJGU6cmV0dXJuIHQ9PWUrIiI7Y2FzZSB6ZTp2YXIgYT1qZTtjYXNlIGtlOnZhciBjPW4md2U7aWYoYXx8KGE9bWUpLHQuc2l6ZSE9ZS5zaXplJiYhYylyZXR1cm4hMTt2YXIgZj1pLmdldCh0KTtpZihmKXJldHVybiBmPT1lO258PU9lLGkuc2V0KHQsZSk7dmFyIHM9Z2UoYSh0KSxhKGUpLG4sbyx1LGkpO3JldHVybiBpLmRlbGV0ZSh0KSxzO2Nhc2UgRmU6aWYoSWUpcmV0dXJuIEllLmNhbGwodCk9PUllLmNhbGwoZSl9cmV0dXJuITF9KHQsZSxjLHIsbixvLHUpO2lmKCEociZxZSkpe3ZhciBoPXMmJkplLmNhbGwodCwiX193cmFwcGVkX18iKSx2PWwmJkplLmNhbGwoZSwiX193cmFwcGVkX18iKTtpZihofHx2KXt2YXIgeT1oP3QudmFsdWUoKTp0LGI9dj9lLnZhbHVlKCk6ZTtyZXR1cm4gdXx8KHU9bmV3IGhlKSxvKHksYixyLG4sdSl9fXJldHVybiEhcCYmKHV8fCh1PW5ldyBoZSksZnVuY3Rpb24odCxlLHIsbixvLHUpe3ZhciBpPXImQ2UsYT1CZSh0KSxjPWEubGVuZ3RoO2lmKGMhPUJlKGUpLmxlbmd0aCYmIWkpcmV0dXJuITE7Zm9yKHZhciBmPWM7Zi0tOyl7dmFyIHM9YVtmXTtpZighKGk/cyBpbiBlOldlLmNhbGwoZSxzKSkpcmV0dXJuITF9dmFyIGw9dS5nZXQodCkscD11LmdldChlKTtpZihsJiZwKXJldHVybiBsPT1lJiZwPT10O3ZhciBoPSEwO3Uuc2V0KHQsZSksdS5zZXQoZSx0KTtmb3IodmFyIHY9aTsrK2Y8Yzspe3ZhciB5PXRbcz1hW2ZdXSxiPWVbc107aWYobil2YXIgZD1pP24oYix5LHMsZSx0LHUpOm4oeSxiLHMsdCxlLHUpO2lmKCEodm9pZCAwPT09ZD95PT09Ynx8byh5LGIscixuLHUpOmQpKXtoPSExO2JyZWFrfXZ8fCh2PSJjb25zdHJ1Y3RvciI9PXMpfWlmKGgmJiF2KXt2YXIgZz10LmNvbnN0cnVjdG9yLF89ZS5jb25zdHJ1Y3RvcjtnPT1ffHwhKCJjb25zdHJ1Y3RvciJpbiB0KXx8ISgiY29uc3RydWN0b3IiaW4gZSl8fCJmdW5jdGlvbiI9PXR5cGVvZiBnJiZnIGluc3RhbmNlb2YgZyYmImZ1bmN0aW9uIj09dHlwZW9mIF8mJl8gaW5zdGFuY2VvZiBffHwoaD0hMSl9cmV0dXJuIHUuZGVsZXRlKHQpLHUuZGVsZXRlKGUpLGh9KHQsZSxyLG4sbyx1KSl9ZnVuY3Rpb24gUWUodCxlLHIsbixvKXtyZXR1cm4gdD09PWV8fChudWxsPT10fHxudWxsPT1lfHwhZyh0KSYmIWcoZSk/dCE9dCYmZSE9ZTpLZSh0LGUscixuLFFlLG8pKX12YXIgWGU9MSxZZT0yO2Z1bmN0aW9uIFplKHQpe3JldHVybiB0PT10JiYhSyh0KX1mdW5jdGlvbiB0cih0LGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmKHJbdF09PT1lJiYodm9pZCAwIT09ZXx8dCBpbiBPYmplY3QocikpKX19ZnVuY3Rpb24gZXIodCl7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXJ0KHQpLHI9ZS5sZW5ndGg7ci0tOyl7dmFyIG49ZVtyXSxvPXRbbl07ZVtyXT1bbixvLFplKG8pXX1yZXR1cm4gZX0odCk7cmV0dXJuIDE9PWUubGVuZ3RoJiZlWzBdWzJdP3RyKGVbMF1bMF0sZVswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT10fHxmdW5jdGlvbih0LGUscixuKXt2YXIgbz1yLmxlbmd0aCx1PW8saT0hbjtpZihudWxsPT10KXJldHVybiF1O2Zvcih0PU9iamVjdCh0KTtvLS07KXt2YXIgYT1yW29dO2lmKGkmJmFbMl0/YVsxXSE9PXRbYVswXV06IShhWzBdaW4gdCkpcmV0dXJuITF9Zm9yKDsrK288dTspe3ZhciBjPShhPXJbb10pWzBdLGY9dFtjXSxzPWFbMV07aWYoaSYmYVsyXSl7aWYodm9pZCAwPT09ZiYmIShjIGluIHQpKXJldHVybiExfWVsc2V7dmFyIGw9bmV3IGhlO2lmKG4pdmFyIHA9bihmLHMsYyx0LGUsbCk7aWYoISh2b2lkIDA9PT1wP1FlKHMsZixYZXxZZSxuLGwpOnApKXJldHVybiExfX1yZXR1cm4hMH0ocix0LGUpfX12YXIgcnI9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gbnIodCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxnKHQpJiZkKHQpPT1ycn12YXIgb3I9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sdXI9L15cdyokLztmdW5jdGlvbiBpcih0LGUpe2lmKFModCkpcmV0dXJuITE7dmFyIHI9dHlwZW9mIHQ7cmV0dXJuISgibnVtYmVyIiE9ciYmInN5bWJvbCIhPXImJiJib29sZWFuIiE9ciYmbnVsbCE9dCYmIW5yKHQpKXx8KHVyLnRlc3QodCl8fCFvci50ZXN0KHQpfHxudWxsIT1lJiZ0IGluIE9iamVjdChlKSl9dmFyIGFyPSJFeHBlY3RlZCBhIGZ1bmN0aW9uIjtmdW5jdGlvbiBjcih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxudWxsIT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKGFyKTt2YXIgcj1mdW5jdGlvbigpe3ZhciBuPWFyZ3VtZW50cyxvPWU/ZS5hcHBseSh0aGlzLG4pOm5bMF0sdT1yLmNhY2hlO2lmKHUuaGFzKG8pKXJldHVybiB1LmdldChvKTt2YXIgaT10LmFwcGx5KHRoaXMsbik7cmV0dXJuIHIuY2FjaGU9dS5zZXQobyxpKXx8dSxpfTtyZXR1cm4gci5jYWNoZT1uZXcoY3IuQ2FjaGV8fHBlKSxyfWNyLkNhY2hlPXBlO3ZhciBmcj0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxzcj0vXFwoXFwpPy9nLGxyPWZ1bmN0aW9uKHQpe3ZhciBlPWNyKHQsKGZ1bmN0aW9uKHQpe3JldHVybiA1MDA9PT1yLnNpemUmJnIuY2xlYXIoKSx0fSkpLHI9ZS5jYWNoZTtyZXR1cm4gZX0oKGZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiA0Nj09PXQuY2hhckNvZGVBdCgwKSYmZS5wdXNoKCIiKSx0LnJlcGxhY2UoZnIsKGZ1bmN0aW9uKHQscixuLG8pe2UucHVzaChuP28ucmVwbGFjZShzciwiJDEiKTpyfHx0KX0pKSxlfSkpLHByPWxyLGhyPTEvMCx2cj1jP2MucHJvdG90eXBlOnZvaWQgMCx5cj12cj92ci50b1N0cmluZzp2b2lkIDA7ZnVuY3Rpb24gYnIodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB0O2lmKFModCkpcmV0dXJuIHJlKHQsYnIpKyIiO2lmKG5yKHQpKXJldHVybiB5cj95ci5jYWxsKHQpOiIiO3ZhciBlPXQrIiI7cmV0dXJuIjAiPT1lJiYxL3Q9PS1ocj8iLTAiOmV9ZnVuY3Rpb24gZHIodCl7cmV0dXJuIG51bGw9PXQ/IiI6YnIodCl9ZnVuY3Rpb24gZ3IodCxlKXtyZXR1cm4gUyh0KT90OmlyKHQsZSk/W3RdOnByKGRyKHQpKX12YXIgX3I9MS8wO2Z1bmN0aW9uIGpyKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdHx8bnIodCkpcmV0dXJuIHQ7dmFyIGU9dCsiIjtyZXR1cm4iMCI9PWUmJjEvdD09LV9yPyItMCI6ZX1mdW5jdGlvbiBtcih0LGUpe2Zvcih2YXIgcj0wLG49KGU9Z3IoZSx0KSkubGVuZ3RoO251bGwhPXQmJnI8bjspdD10W2pyKGVbcisrXSldO3JldHVybiByJiZyPT1uP3Q6dm9pZCAwfWZ1bmN0aW9uIHdyKHQsZSxyKXt2YXIgbj1udWxsPT10P3ZvaWQgMDptcih0LGUpO3JldHVybiB2b2lkIDA9PT1uP3I6bn1mdW5jdGlvbiBPcih0LGUpe3JldHVybiBudWxsIT10JiZlIGluIE9iamVjdCh0KX1mdW5jdGlvbiBTcih0LGUpe3JldHVybiBudWxsIT10JiZmdW5jdGlvbih0LGUscil7Zm9yKHZhciBuPS0xLG89KGU9Z3IoZSx0KSkubGVuZ3RoLHU9ITE7KytuPG87KXt2YXIgaT1qcihlW25dKTtpZighKHU9bnVsbCE9dCYmcih0LGkpKSlicmVhazt0PXRbaV19cmV0dXJuIHV8fCsrbiE9bz91OiEhKG89bnVsbD09dD8wOnQubGVuZ3RoKSYmTChvKSYmJChpLG8pJiYoUyh0KXx8Tyh0KSl9KHQsZSxPcil9dmFyIEFyPTEseHI9MjtmdW5jdGlvbiB6cih0KXtyZXR1cm4gaXIodCk/TnQoanIodCkpOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gbXIoZSx0KX19KHQpfWZ1bmN0aW9uIFByKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbD09dD91dDoib2JqZWN0Ij09dHlwZW9mIHQ/Uyh0KT9mdW5jdGlvbih0LGUpe3JldHVybiBpcih0KSYmWmUoZSk/dHIoanIodCksZSk6ZnVuY3Rpb24ocil7dmFyIG49d3Iocix0KTtyZXR1cm4gdm9pZCAwPT09biYmbj09PWU/U3Iocix0KTpRZShlLG4sQXJ8eHIpfX0odFswXSx0WzFdKTplcih0KTp6cih0KX1mdW5jdGlvbiBFcih0LGUpe3ZhciByPS0xLG49ZXQodCk/QXJyYXkodC5sZW5ndGgpOltdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG8sdSl7blsrK3JdPWUodCxvLHUpfSkpLG59ZnVuY3Rpb24ga3IodCxlKXtyZXR1cm4oUyh0KT9yZTpFcikodCxQcihlKSl9dmFyICRyPS9ccy87dmFyIEZyPS9eXHMrLztmdW5jdGlvbiBMcih0KXtyZXR1cm4gdD90LnNsaWNlKDAsZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLSYmJHIudGVzdCh0LmNoYXJBdChlKSk7KTtyZXR1cm4gZX0odCkrMSkucmVwbGFjZShGciwiIik6dH1mdW5jdGlvbiBUcih0LGUscil7dmFyIG49dC5sZW5ndGg7cmV0dXJuIHI9dm9pZCAwPT09cj9uOnIsIWUmJnI+PW4/dDpmdW5jdGlvbih0LGUscil7dmFyIG49LTEsbz10Lmxlbmd0aDtlPDAmJihlPS1lPm8/MDpvK2UpLChyPXI+bz9vOnIpPDAmJihyKz1vKSxvPWU+cj8wOnItZT4+PjAsZT4+Pj0wO2Zvcih2YXIgdT1BcnJheShvKTsrK248bzspdVtuXT10W24rZV07cmV0dXJuIHV9KHQsZSxyKX1mdW5jdGlvbiBEcih0KXtyZXR1cm4gdCE9dH1mdW5jdGlvbiBJcih0LGUscil7cmV0dXJuIGU9PWU/ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1yLTEsbz10Lmxlbmd0aDsrK248bzspaWYodFtuXT09PWUpcmV0dXJuIG47cmV0dXJuLTF9KHQsZSxyKTpmdW5jdGlvbih0LGUscixuKXtmb3IodmFyIG89dC5sZW5ndGgsdT1yKyhuPzE6LTEpO24/dS0tOisrdTxvOylpZihlKHRbdV0sdSx0KSlyZXR1cm4gdTtyZXR1cm4tMX0odCxEcixyKX12YXIgTXI9IlxcdWQ4MDAtXFx1ZGZmZiIsTnI9IlsiK01yKyJdIixScj0iW1xcdTAzMDAtXFx1MDM2ZlxcdWZlMjAtXFx1ZmUyZlxcdTIwZDAtXFx1MjBmZl0iLFVyPSJcXHVkODNjW1xcdWRmZmItXFx1ZGZmZl0iLEJyPSJbXiIrTXIrIl0iLENyPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixXcj0iW1xcdWQ4MDAtXFx1ZGJmZl1bXFx1ZGMwMC1cXHVkZmZmXSIscXI9Iig/OiIrUnIrInwiK1VyKyIpIisiPyIsVnI9IltcXHVmZTBlXFx1ZmUwZl0/IixHcj1WcitxcisoIig/OlxcdTIwMGQoPzoiK1tCcixDcixXcl0uam9pbigifCIpKyIpIitWcitxcisiKSoiKSxIcj0iKD86IitbQnIrUnIrIj8iLFJyLENyLFdyLE5yXS5qb2luKCJ8IikrIikiLEpyPVJlZ0V4cChVcisiKD89IitVcisiKXwiK0hyK0dyLCJnIik7ZnVuY3Rpb24gS3IodCl7cmV0dXJuIEJ0KHQpP2Z1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKEpyKXx8W119KHQpOmZ1bmN0aW9uKHQpe3JldHVybiB0LnNwbGl0KCIiKX0odCl9ZnVuY3Rpb24gUXIodCxlLHIpe2lmKCh0PWRyKHQpKSYmKHJ8fHZvaWQgMD09PWUpKXJldHVybiBMcih0KTtpZighdHx8IShlPWJyKGUpKSlyZXR1cm4gdDt2YXIgbj1Lcih0KSxvPUtyKGUpLHU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9LTEsbj10Lmxlbmd0aDsrK3I8biYmSXIoZSx0W3JdLDApPi0xOyk7cmV0dXJuIHJ9KG4sbyksaT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10Lmxlbmd0aDtyLS0mJklyKGUsdFtyXSwwKT4tMTspO3JldHVybiByfShuLG8pKzE7cmV0dXJuIFRyKG4sdSxpKS5qb2luKCIiKX1mdW5jdGlvbiBYcih0KXtyZXR1cm4hKCFmdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBTdHJpbmddIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0odCl8fCIiPT09dCl9ZnVuY3Rpb24gWXIodCxlKXtpZighWHIodCkpcmV0dXJuW107aWYoIVhyKGUpKXJldHVybltdO2xldCByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFhyKHQpJiZYcihlKT90LnNwbGl0KGUpOltdfSh0LGUpO3I9a3IocixRcik7bGV0IG49W107cmV0dXJuIGl0KHIsKGZ1bmN0aW9uKHQpe1hyKHQpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBacih0KXtsZXQgZT0hMTtpZihYcih0KSllPSFpc05hTihOdW1iZXIodCkpO2Vsc2UgaWYoZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgTnVtYmVyXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9KHQpKXtpZihmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH0odCkpcmV0dXJuITE7ZT0hMH1yZXR1cm4gZX12YXIgdG49TmFOLGVuPS9eWy0rXTB4WzAtOWEtZl0rJC9pLHJuPS9eMGJbMDFdKyQvaSxubj0vXjBvWzAtN10rJC9pLG9uPXBhcnNlSW50O2Z1bmN0aW9uIHVuKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihucih0KSlyZXR1cm4gdG47aWYoSyh0KSl7dmFyIGU9ImZ1bmN0aW9uIj09dHlwZW9mIHQudmFsdWVPZj90LnZhbHVlT2YoKTp0O3Q9SyhlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9THIodCk7dmFyIHI9cm4udGVzdCh0KTtyZXR1cm4gcnx8bm4udGVzdCh0KT9vbih0LnNsaWNlKDIpLHI/Mjo4KTplbi50ZXN0KHQpP3RuOit0fXZhciBhbj0xLzAsY249MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIGZuKHQpe3JldHVybiB0Pyh0PXVuKHQpKT09PWFufHx0PT09LWFuPyh0PDA/LTE6MSkqY246dD09dD90OjA6MD09PXQ/dDowfWZ1bmN0aW9uIHNuKHQpe3ZhciBlPWZuKHQpLHI9ZSUxO3JldHVybiBlPT1lP3I/ZS1yOmU6MH1mdW5jdGlvbiBsbih0KXtpZighWnIodCkpcmV0dXJuIDA7cmV0dXJuIGZuKHQpfWZ1bmN0aW9uIHBuKHQpe3JldHVybiEhWnIodCkmJih0PWxuKHQpLCJudW1iZXIiPT10eXBlb2YoZT10KSYmZT09c24oZSkpO3ZhciBlfXZhciBobj1hLmlzRmluaXRlLHZuPU1hdGgubWluO3ZhciB5bj1mdW5jdGlvbih0KXt2YXIgZT1NYXRoW3RdO3JldHVybiBmdW5jdGlvbih0LHIpe2lmKHQ9dW4odCksKHI9bnVsbD09cj8wOnZuKHNuKHIpLDI5MikpJiZobih0KSl7dmFyIG49KGRyKHQpKyJlIikuc3BsaXQoImUiKTtyZXR1cm4rKChuPShkcihlKG5bMF0rImUiKygrblsxXStyKSkpKyJlIikuc3BsaXQoImUiKSlbMF0rImUiKygrblsxXS1yKSl9cmV0dXJuIGUodCl9fSgicm91bmQiKSxibj15bjtmdW5jdGlvbiBkbih0KXtpZighWnIodCkpcmV0dXJuIDA7dD1sbih0KTtsZXQgZT1ibih0KTtyZXR1cm4iMCI9PT1TdHJpbmcoZSk/MDplfWZ1bmN0aW9uIGduKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtyZXR1cm4hIXIuZXhpc3RzU3luYyh0KSYmKCFyLmxzdGF0U3luYyh0KS5pc0RpcmVjdG9yeSgpJiYhci5sc3RhdFN5bmModCkuaXNTeW1ib2xpY0xpbmsoKSl9ZnVuY3Rpb24gX24odCl7cmV0dXJuIGduKHQse2ZzOmV9KX1mdW5jdGlvbiBqbih0LGUpe3ZhciByPVtdO3JldHVybiBvdCh0LChmdW5jdGlvbih0LG4sbyl7ZSh0LG4sbykmJnIucHVzaCh0KX0pKSxyfWZ1bmN0aW9uIG1uKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKTtpZighci5leGlzdHNTeW5jKHQpKXJldHVybiExO2xldCBuPXIubHN0YXRTeW5jKHQpO3JldHVybiFuLmlzRmlsZSgpJiYhbi5pc1N5bWJvbGljTGluaygpfWZ1bmN0aW9uIHduKHQsZT0xLHI9e30pe2xldCBuPXdyKHIsInBhdGgiKSxvPXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOm99KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO2xldCB1PVtdO3ZhciBpLGE7cmV0dXJuIHU9ZnVuY3Rpb24odCxlPTEscj17fSl7bGV0IG49MSxvPXdyKHIsInBhdGgiKSx1PXdyKHIsImZzIik7aWYoIW1uKHQse2ZzOnV9KSl0aHJvdyBuZXcgRXJyb3IoYGZkWyR7dH1dIGlzIG5vdCBhIGZvbGRlcmApO3JldHVybiBmdW5jdGlvbiB0KHIpe2xldCBpPVtdO3JldHVybiBtbihyLHtmczp1fSk/KGl0KHUucmVhZGRpclN5bmMociksKGZ1bmN0aW9uKGEpe2xldCBjPW8ucmVzb2x2ZShyLGEpLGY9bnVsbDt0cnl7Zj11LnN0YXRTeW5jKGMpfWNhdGNoKHQpe31mJiZmLmlzRGlyZWN0b3J5KCk/KGkucHVzaCh7aXNGb2xkZXI6ITAsbGV2ZWw6bixwYXRoOmMsbmFtZTpvLmJhc2VuYW1lKGMpfSksbis9MSwobjw9ZXx8bnVsbD09PWUpJiYoaT1pLmNvbmNhdCh0KGMpKSksbi09MSk6aS5wdXNoKHtpc0ZvbGRlcjohMSxsZXZlbDpuLHBhdGg6YyxuYW1lOm8uYmFzZW5hbWUoYyl9KX0pKSxpKTppfSh0KX0odCxlLHtwYXRoOm4sZnM6b30pLGE9e2lzRm9sZGVyOiExfSx1PShTKGk9dSk/TWU6am4pKGksUHIoYSkpLHU9a3IodSwodD0+KGRlbGV0ZSB0LmlzRm9sZGVyLHQpKSksdX1mdW5jdGlvbiBPbih0KXtyZXR1cm4gT249ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9LE9uKHQpfWZ1bmN0aW9uIFNuKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7aWYoIm9iamVjdCIhPT1Pbih0KXx8bnVsbD09PXQpcmV0dXJuIHQ7dmFyIHI9dFtTeW1ib2wudG9QcmltaXRpdmVdO2lmKHZvaWQgMCE9PXIpe3ZhciBuPXIuY2FsbCh0LGV8fCJkZWZhdWx0Iik7aWYoIm9iamVjdCIhPT1PbihuKSlyZXR1cm4gbjt0aHJvdyBuZXcgVHlwZUVycm9yKCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLiIpfXJldHVybigic3RyaW5nIj09PWU/U3RyaW5nOk51bWJlcikodCl9KHQsInN0cmluZyIpO3JldHVybiJzeW1ib2wiPT09T24oZSk/ZTpTdHJpbmcoZSl9ZnVuY3Rpb24gQW4odCxlLHIpe3JldHVybihlPVNuKGUpKWluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWNvbnN0IHhuPW5ldyBVaW50OEFycmF5KFswLDk3LDExNSwxMDksMSwwLDAsMCwxLDQ4LDgsOTYsMywxMjcsMTI3LDEyNywxLDEyNyw5NiwzLDEyNywxMjcsMTI3LDAsOTYsMiwxMjcsMTI3LDAsOTYsMSwxMjcsMSwxMjcsOTYsMywxMjcsMTI3LDEyNiwxLDEyNiw5NiwzLDEyNiwxMjcsMTI3LDEsMTI2LDk2LDIsMTI3LDEyNiwwLDk2LDEsMTI3LDEsMTI2LDMsMTEsMTAsMCwwLDIsMSwzLDQsNSw2LDEsNyw1LDMsMSwwLDEsNyw4NSw5LDMsMTA5LDEwMSwxMDksMiwwLDUsMTIwLDEyMCwxMDQsNTEsNTAsMCwwLDYsMTA1LDExMCwxMDUsMTE2LDUxLDUwLDAsMiw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTEsNTAsMCwzLDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTEsNTAsMCw0LDUsMTIwLDEyMCwxMDQsNTQsNTIsMCw1LDYsMTA1LDExMCwxMDUsMTE2LDU0LDUyLDAsNyw4LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNTQsNTIsMCw4LDgsMTAwLDEwNSwxMDMsMTAxLDExNSwxMTYsNTQsNTIsMCw5LDEwLDI1MSwyMiwxMCwyNDIsMSwxLDQsMTI3LDMyLDAsMzIsMSwxMDYsMzMsMywzMiwxLDY1LDE2LDc5LDQsMTI3LDMyLDMsNjUsMTYsMTA3LDMzLDYsMzIsMiw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsMzMsMywzMiwyLDY1LDEzNywyMzUsMjA4LDIwOCw3LDEwNywzMyw0LDMyLDIsNjUsMjA3LDE0MCwxNjIsMTQyLDYsMTA2LDMzLDUsMyw2NCwzMiwzLDMyLDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw0LDMyLDAsNjUsNCwxMDYsMzQsMCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw0LDMyLDIsMzIsMCw2NSw0LDEwNiwzNCwwLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsNSwzMiwwLDY1LDQsMTA2LDM0LDAsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsNSwzMiw2LDMyLDAsNjUsNCwxMDYsMzQsMCw3OSwxMywwLDExLDMyLDIsNjUsMTIsMTE5LDMyLDUsNjUsMTgsMTE5LDEwNiwzMiw0LDY1LDcsMTE5LDEwNiwzMiwzLDY1LDEsMTE5LDEwNiw1LDMyLDIsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA2LDExLDMyLDEsMTA2LDMyLDAsMzIsMSw2NSwxNSwxMTMsMTYsMSwxMSwxNDYsMSwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDEsNjUsNCwxMDYsMzIsMiw3NSw2OSw0LDY0LDMyLDAsMzIsMSw0MCwyLDAsNjUsMTg5LDIyMCwyMDIsMTQ5LDEyNCwxMDgsMTA2LDY1LDE3LDExOSw2NSwxNzUsMjE0LDIxMSwxOTAsMiwxMDgsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTIsMSwxMSwxMSwzLDY0LDMyLDEsMzIsMiw3OSw2OSw0LDY0LDMyLDAsMzIsMSw0NSwwLDAsNjUsMTc3LDIwNywyMTcsMTc4LDEsMTA4LDEwNiw2NSwxMSwxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMCwzMiwxLDY1LDEsMTA2LDMzLDEsMTIsMSwxMSwxMSwzMiwwLDMyLDAsNjUsMTUsMTE4LDExNSw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwzNCwwLDY1LDEzLDExOCwzMiwwLDExNSw2NSwxODksMjIwLDIwMiwxNDksMTI0LDEwOCwzNCwwLDY1LDE2LDExOCwzMiwwLDExNSwxMSw2MywwLDMyLDAsNjUsOCwxMDYsMzIsMSw2NSwxNjgsMTM2LDE0MSwxNjEsMiwxMDYsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDEsNjUsMTM3LDIzNSwyMDgsMjA4LDcsMTA3LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDU0LDIsMCwzMiwwLDY1LDIwLDEwNiwzMiwxLDY1LDIwNywxNDAsMTYyLDE0Miw2LDEwNiw1NCwyLDAsMTEsMTk1LDQsMSw2LDEyNywzMiwxLDMyLDIsMTA2LDMzLDYsMzIsMCw2NSwyNCwxMDYsMzMsNCwzMiwwLDY1LDQwLDEwNiw0MCwyLDAsMzMsMywzMiwwLDMyLDAsNDAsMiwwLDMyLDIsMTA2LDU0LDIsMCwzMiwwLDY1LDQsMTA2LDM0LDUsMzIsNSw0MCwyLDAsMzIsMiw2NSwxNiw3OSwzMiwwLDQwLDIsMCw2NSwxNiw3OSwxMTQsMTE0LDU0LDIsMCwzMiwyLDMyLDMsMTA2LDY1LDE2LDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDE2LDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCw1NCwyLDAsMzIsMCw2NSwxMiwxMDYsMzQsMywzMiwzLDQwLDIsMCwzMiw0LDY1LDQsMTA2LDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDU0LDIsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDAsMiwwLDMyLDQsNjUsOCwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDM0LDMsMzIsMyw0MCwyLDAsMzIsNCw2NSwxMiwxMDYsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsNTQsMiwwLDMyLDAsNjUsNDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDMyLDYsNjUsMTYsMTA3LDc3LDQsNjQsMzIsNiw2NSwxNiwxMDcsMzMsOCwzMiwwLDY1LDgsMTA2LDQwLDIsMCwzMywyLDMyLDAsNjUsMTIsMTA2LDQwLDIsMCwzMywzLDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMyw1LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCwzMyw3LDMsNjQsMzIsMiwzMiwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDIsMzIsMywzMiwxLDY1LDQsMTA2LDM0LDEsNDAsMiwwLDY1LDI0NywxNDgsMTc1LDE3NSwxMjAsMTA4LDEwNiw2NSwxMywxMTksNjUsMTc3LDI0MywyMjEsMjQxLDEyMSwxMDgsMzMsMywzMiw1LDMyLDEsNjUsNCwxMDYsMzQsMSw0MCwyLDAsNjUsMjQ3LDE0OCwxNzUsMTc1LDEyMCwxMDgsMTA2LDY1LDEzLDExOSw2NSwxNzcsMjQzLDIyMSwyNDEsMTIxLDEwOCwzMyw1LDMyLDcsMzIsMSw2NSw0LDEwNiwzNCwxLDQwLDIsMCw2NSwyNDcsMTQ4LDE3NSwxNzUsMTIwLDEwOCwxMDYsNjUsMTMsMTE5LDY1LDE3NywyNDMsMjIxLDI0MSwxMjEsMTA4LDMzLDcsMzIsOCwzMiwxLDY1LDQsMTA2LDM0LDEsNzksMTMsMCwxMSwzMiwwLDY1LDgsMTA2LDMyLDIsNTQsMiwwLDMyLDAsNjUsMTIsMTA2LDMyLDMsNTQsMiwwLDMyLDAsNjUsMTYsMTA2LDMyLDUsNTQsMiwwLDMyLDAsNjUsMjAsMTA2LDMyLDcsNTQsMiwwLDExLDMyLDEsMzIsNiw3Myw0LDY0LDMyLDQsMzIsMSwzMiw2LDMyLDEsMTA3LDM0LDEsMjUyLDEwLDAsMCwzMiwwLDY1LDQwLDEwNiwzMiwxLDU0LDIsMCwxMSwxMSw5NywxLDEsMTI3LDMyLDAsNjUsMTYsMTA2LDQwLDIsMCwzMywxLDMyLDAsNjUsNCwxMDYsNDAsMiwwLDQsMTI3LDMyLDEsNjUsMTIsMTE5LDMyLDAsNjUsMjAsMTA2LDQwLDIsMCw2NSwxOCwxMTksMTA2LDMyLDAsNjUsMTIsMTA2LDQwLDIsMCw2NSw3LDExOSwxMDYsMzIsMCw2NSw4LDEwNiw0MCwyLDAsNjUsMSwxMTksMTA2LDUsMzIsMSw2NSwxNzcsMjA3LDIxNywxNzgsMSwxMDYsMTEsMzIsMCw0MCwyLDAsMTA2LDMyLDAsNjUsMjQsMTA2LDMyLDAsNjUsNDAsMTA2LDQwLDIsMCwxNiwxLDExLDI1NSwzLDIsMywxMjYsMSwxMjcsMzIsMCwzMiwxLDEwNiwzMyw2LDMyLDEsNjUsMzIsNzksNCwxMjYsMzIsNiw2NSwzMiwxMDcsMzMsNiwzMiwyLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDMzLDMsMzIsMiw2NiwxNzcsMTY5LDE3MiwxOTMsMTczLDE4NCwyMTIsMTY2LDYxLDEyNSwzMyw0LDMyLDIsNjYsMjQ5LDIzNCwyMDgsMjA4LDIzMSwyMDEsMTYxLDIyOCwyMjUsMCwxMjQsMzMsNSwzLDY0LDMyLDMsMzIsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDMsMzIsNCwzMiwwLDY1LDgsMTA2LDM0LDAsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw0LDMyLDIsMzIsMCw2NSw4LDEwNiwzNCwwLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsMiwzMiw1LDMyLDAsNjUsOCwxMDYsMzQsMCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDUsMzIsNiwzMiwwLDY1LDgsMTA2LDM0LDAsNzksMTMsMCwxMSwzMiwyLDY2LDEyLDEzNywzMiw1LDY2LDE4LDEzNywxMjQsMzIsNCw2Niw3LDEzNywxMjQsMzIsMyw2NiwxLDEzNywxMjQsMzIsMyw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw0LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDIsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsNSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSw1LDMyLDIsNjYsMTk3LDIwNywyMTcsMTc4LDI0MSwyMjksMTg2LDIzNCwzOSwxMjQsMTEsMzIsMSwxNzMsMTI0LDMyLDAsMzIsMSw2NSwzMSwxMTMsMTYsNiwxMSwxMzQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMiwzLDY0LDMyLDIsMzIsMSw2NSw4LDEwNiw3OSw0LDY0LDMyLDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMyLDAsMTMzLDY2LDI3LDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMzLDAsMzIsMSw2NSw4LDEwNiwzMywxLDEyLDEsMTEsMTEsMzIsMSw2NSw0LDEwNiwzMiwyLDc3LDQsNjQsMzIsMCwzMiwxLDUzLDIsMCw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwyMywxMzcsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMjQ5LDI0MywyMjEsMjQxLDE1MywyNDYsMTUzLDE3MSwyMiwxMjQsMzMsMCwzMiwxLDY1LDQsMTA2LDMzLDEsMTEsMyw2NCwzMiwxLDMyLDIsNzMsNCw2NCwzMiwwLDMyLDEsNDksMCwwLDY2LDE5NywyMDcsMjE3LDE3OCwyNDEsMjI5LDE4NiwyMzQsMzksMTI2LDEzMyw2NiwxMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMywwLDMyLDEsNjUsMSwxMDYsMzMsMSwxMiwxLDExLDExLDMyLDAsMzIsMCw2NiwzMywxMzYsMTMzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDM0LDAsMzIsMCw2NiwyOSwxMzYsMTMzLDY2LDI0OSwyNDMsMjIxLDI0MSwxNTMsMjQ2LDE1MywxNzEsMjIsMTI2LDM0LDAsMzIsMCw2NiwzMiwxMzYsMTMzLDExLDc3LDAsMzIsMCw2NSw4LDEwNiwzMiwxLDY2LDIxNCwyMzUsMTMwLDIzOCwyMzQsMjUzLDEzNywyNDUsMjI0LDAsMTI0LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzMiwxLDY2LDE3NywxNjksMTcyLDE5MywxNzMsMTg0LDIxMiwxNjYsNjEsMTI1LDU1LDMsMCwzMiwwLDY1LDI0LDEwNiwzMiwxLDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzMiwxLDY2LDI0OSwyMzQsMjA4LDIwOCwyMzEsMjAxLDE2MSwyMjgsMjI1LDAsMTI0LDU1LDMsMCwxMSwyNDQsNCwyLDMsMTI3LDQsMTI2LDMyLDEsMzIsMiwxMDYsMzMsNSwzMiwwLDY1LDQwLDEwNiwzMyw0LDMyLDAsNjUsMjAwLDAsMTA2LDQwLDIsMCwzMywzLDMyLDAsMzIsMCw0MSwzLDAsMzIsMiwxNzMsMTI0LDU1LDMsMCwzMiwyLDMyLDMsMTA2LDY1LDMyLDczLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDMyLDIsMjUyLDEwLDAsMCwzMiwwLDY1LDIwMCwwLDEwNiwzMiwyLDMyLDMsMTA2LDU0LDIsMCwxNSwxMSwzMiwzLDQsNjQsMzIsMywzMiw0LDEwNiwzMiwxLDY1LDMyLDMyLDMsMTA3LDM0LDIsMjUyLDEwLDAsMCwzMiwwLDY1LDgsMTA2LDM0LDMsMzIsMyw0MSwzLDAsMzIsNCw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDE2LDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsOCwxMDYsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzQsMywzMiwzLDQxLDMsMCwzMiw0LDY1LDE2LDEwNiw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDU1LDMsMCwzMiwwLDY1LDMyLDEwNiwzNCwzLDMyLDMsNDEsMywwLDMyLDQsNjUsMjQsMTA2LDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNTUsMywwLDMyLDAsNjUsMjAwLDAsMTA2LDY1LDAsNTQsMiwwLDMyLDEsMzIsMiwxMDYsMzMsMSwxMSwzMiwxLDY1LDMyLDEwNiwzMiw1LDc3LDQsNjQsMzIsNSw2NSwzMiwxMDcsMzMsMiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzMyw2LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzMyw3LDMyLDAsNjUsMjQsMTA2LDQxLDMsMCwzMyw4LDMyLDAsNjUsMzIsMTA2LDQxLDMsMCwzMyw5LDMsNjQsMzIsNiwzMiwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsNiwzMiw3LDMyLDEsNjUsOCwxMDYsMzQsMSw0MSwzLDAsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsMTI0LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDMzLDcsMzIsOCwzMiwxLDY1LDgsMTA2LDM0LDEsNDEsMywwLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDEyNCw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwzMyw4LDMyLDksMzIsMSw2NSw4LDEwNiwzNCwxLDQxLDMsMCw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiwxMjQsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMzMsOSwzMiwyLDMyLDEsNjUsOCwxMDYsMzQsMSw3OSwxMywwLDExLDMyLDAsNjUsOCwxMDYsMzIsNiw1NSwzLDAsMzIsMCw2NSwxNiwxMDYsMzIsNyw1NSwzLDAsMzIsMCw2NSwyNCwxMDYsMzIsOCw1NSwzLDAsMzIsMCw2NSwzMiwxMDYsMzIsOSw1NSwzLDAsMTEsMzIsMSwzMiw1LDczLDQsNjQsMzIsNCwzMiwxLDMyLDUsMzIsMSwxMDcsMzQsMSwyNTIsMTAsMCwwLDMyLDAsNjUsMjAwLDAsMTA2LDMyLDEsNTQsMiwwLDExLDExLDE4OCwyLDEsNSwxMjYsMzIsMCw2NSwyNCwxMDYsNDEsMywwLDMzLDEsMzIsMCw0MSwzLDAsMzQsMiw2NiwzMiw5MCw0LDEyNiwzMiwwLDY1LDgsMTA2LDQxLDMsMCwzNCwzLDY2LDEsMTM3LDMyLDAsNjUsMTYsMTA2LDQxLDMsMCwzNCw0LDY2LDcsMTM3LDEyNCwzMiwxLDY2LDEyLDEzNywzMiwwLDY1LDMyLDEwNiw0MSwzLDAsMzQsNSw2NiwxOCwxMzcsMTI0LDEyNCwzMiwzLDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDMyLDQsNjYsMjA3LDIxNCwyMTEsMTkwLDIxMCwxOTksMTcxLDIxNyw2NiwxMjYsNjYsMzEsMTM3LDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsMTMzLDY2LDEzNSwxNDksMTc1LDE3NSwxNTIsMTgyLDIyMiwxNTUsMTU4LDEyNywxMjYsNjYsMTU3LDE2MywxODEsMjM0LDEzMSwxNzcsMTQxLDEzOCwyNTAsMCwxMjUsMzIsMSw2NiwyMDcsMjE0LDIxMSwxOTAsMjEwLDE5OSwxNzEsMjE3LDY2LDEyNiw2NiwzMSwxMzcsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiwxMzMsNjYsMTM1LDE0OSwxNzUsMTc1LDE1MiwxODIsMjIyLDE1NSwxNTgsMTI3LDEyNiw2NiwxNTcsMTYzLDE4MSwyMzQsMTMxLDE3NywxNDEsMTM4LDI1MCwwLDEyNSwzMiw1LDY2LDIwNywyMTQsMjExLDE5MCwyMTAsMTk5LDE3MSwyMTcsNjYsMTI2LDY2LDMxLDEzNyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDEzMyw2NiwxMzUsMTQ5LDE3NSwxNzUsMTUyLDE4MiwyMjIsMTU1LDE1OCwxMjcsMTI2LDY2LDE1NywxNjMsMTgxLDIzNCwxMzEsMTc3LDE0MSwxMzgsMjUwLDAsMTI1LDUsMzIsMSw2NiwxOTcsMjA3LDIxNywxNzgsMjQxLDIyOSwxODYsMjM0LDM5LDEyNCwxMSwzMiwyLDEyNCwzMiwwLDY1LDQwLDEwNiwzMiwyLDY2LDMxLDEzMSwxNjcsMTYsNiwxMV0pO2FzeW5jIGZ1bmN0aW9uIHpuKHQsZT17fSl7bGV0IHI9d3IoZSwiZnMiKSxuPXdyKGUsImNodW5rU2l6ZSIpO2lmKFpyKG4pfHwobj02NzEwODg2NCksbj1sbihuKSwhZ24odCx7ZnM6cn0pKXJldHVybiBQcm9taXNlLnJlamVjdCgiZnAgaXMgbm90IGEgZmlsZSIpO2xldCBvPWZ1bmN0aW9uKCl7bGV0IHQsZSxyPW5ldyBQcm9taXNlKChmdW5jdGlvbigpe3Q9YXJndW1lbnRzWzBdLGU9YXJndW1lbnRzWzFdfSkpO3JldHVybiByLnJlc29sdmU9dCxyLnJlamVjdD1lLHJ9KCk7dHJ5e2xldHtjcmVhdGU2NDplfT1hd2FpdCBhc3luYyBmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtjb25zdHtleHBvcnRzOnttZW06ZSx4eGgzMjpyLHh4aDY0Om4saW5pdDMyOm8sdXBkYXRlMzI6dSxkaWdlc3QzMjppLGluaXQ2NDphLHVwZGF0ZTY0OmMsZGlnZXN0NjQ6Zn19PXQ7bGV0IHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpO2Z1bmN0aW9uIGwodCxyKXtpZihlLmJ1ZmZlci5ieXRlTGVuZ3RoPHQrcil7Y29uc3Qgbj1NYXRoLmNlaWwoKHQrci1lLmJ1ZmZlci5ieXRlTGVuZ3RoKS82NTUzNik7ZS5ncm93KG4pLHM9bmV3IFVpbnQ4QXJyYXkoZS5idWZmZXIpfX1mdW5jdGlvbiBwKHQsZSxyLG4sbyx1KXtsKHQpO2NvbnN0IGk9bmV3IFVpbnQ4QXJyYXkodCk7cmV0dXJuIHMuc2V0KGkpLHIoMCxlKSxpLnNldChzLnN1YmFycmF5KDAsdCkpLHt1cGRhdGUoZSl7bGV0IHI7cmV0dXJuIHMuc2V0KGkpLCJzdHJpbmciPT10eXBlb2YgZT8obCgzKmUubGVuZ3RoLHQpLHI9Yi5lbmNvZGVJbnRvKGUscy5zdWJhcnJheSh0KSkud3JpdHRlbik6KGwoZS5ieXRlTGVuZ3RoLHQpLHMuc2V0KGUsdCkscj1lLmJ5dGVMZW5ndGgpLG4oMCx0LHIpLGkuc2V0KHMuc3ViYXJyYXkoMCx0KSksdGhpc30sZGlnZXN0OigpPT4ocy5zZXQoaSksdShvKDApKSl9fWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ+Pj4wfWNvbnN0IHY9Mm4qKjY0bi0xbjtmdW5jdGlvbiB5KHQpe3JldHVybiB0JnZ9Y29uc3QgYj1uZXcgVGV4dEVuY29kZXIsZD0wLGc9MG47ZnVuY3Rpb24gXyh0LGU9ZCl7cmV0dXJuIGwoMyp0Lmxlbmd0aCwwKSxoKHIoMCxiLmVuY29kZUludG8odCxzKS53cml0dGVuLGUpKX1mdW5jdGlvbiBqKHQsZT1nKXtyZXR1cm4gbCgzKnQubGVuZ3RoLDApLHkobigwLGIuZW5jb2RlSW50byh0LHMpLndyaXR0ZW4sZSkpfXJldHVybntoMzI6XyxoMzJUb1N0cmluZzoodCxlPWQpPT5fKHQsZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKSxoMzJSYXc6KHQsZT1kKT0+KGwodC5ieXRlTGVuZ3RoLDApLHMuc2V0KHQpLGgocigwLHQuYnl0ZUxlbmd0aCxlKSkpLGNyZWF0ZTMyOih0PWQpPT5wKDQ4LHQsbyx1LGksaCksaDY0OmosaDY0VG9TdHJpbmc6KHQsZT1nKT0+aih0LGUpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgxNiwiMCIpLGg2NFJhdzoodCxlPWcpPT4obCh0LmJ5dGVMZW5ndGgsMCkscy5zZXQodCkseShuKDAsdC5ieXRlTGVuZ3RoLGUpKSksY3JlYXRlNjQ6KHQ9Zyk9PnAoODgsdCxhLGMsZix5KX19KChhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh4bikpLmluc3RhbmNlKX0oKSx1PWUoKSxpPXIuY3JlYXRlUmVhZFN0cmVhbSh0LHtoaWdoV2F0ZXJNYXJrOm59KTtpLm9uKCJkYXRhIiwodD0+e3UudXBkYXRlKHQpfSkpLGkub24oImVuZCIsKCgpPT57bGV0IHQ9dS5kaWdlc3QoKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsIjAiKTtvLnJlc29sdmUodCl9KSksaS5vbigiZXJyb3IiLG8ucmVqZWN0KX1jYXRjaCh0KXtvLnJlamVjdCh0LnRvU3RyaW5nKCkpfXJldHVybiBvfWZ1bmN0aW9uIFBuKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBFbih0LHI9e30pe3JldHVybiB6bih0LGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP1BuKE9iamVjdChyKSwhMCkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7QW4odCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOlBuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7ZnM6ZX0scikpfWxldCBjaGVja1RvdGFsSGFzaD1hc3luYyhyLG4sbyx1KT0+e2xldCBpPXQuam9pbih1LG8pLGE9ITE7aWYoYT1fbihpKSwhWnIocikpe3JldHVybntlcnJvcjoiaW52YWxpZCBmaWxlU2l6ZSBpbiBwYXlsb2FkIn19bGV0IGM9ITE7aWYoYSl7Yz1yPT09ZS5zdGF0U3luYyhpKS5zaXplfWxldCBmPSExO2EmJmMmJmF3YWl0IEVuKGkpLnRoZW4oKHQ9PntmPW89PT10fSkpLmNhdGNoKCh0PT57Y29uc29sZS5sb2codCksY29uc29sZS5sb2coImZzSXNGaWxlKHBhdGhGaWxlKSIsaSxfbihpKSksZj0hMX0pKTtsZXQgcz1mdW5jdGlvbihyLG49MSl7cmV0dXJuIHduKHIsbix7cGF0aDp0LGZzOmV9KX0odSksbD1bXTtpdChzLCh0PT57bGV0IHI9dC5uYW1lLmluZGV4T2YoYCR7b31fYCk+PTAsdT1lLnN0YXRTeW5jKHQucGF0aCkuc2l6ZT09PW47aWYociYmdSl7bGV0IGU9WXIodC5uYW1lLGAke299X2ApLHI9KGE9bnVsbD09KGk9ZSk/MDppLmxlbmd0aCk/aVthLTFdOnZvaWQgMDtpZighZnVuY3Rpb24odCl7cmV0dXJuISFwbih0KSYmZG4odCk+PTB9KHIpKXRocm93IG5ldyBFcnJvcihgY2FuIG5vdCBwYXJzZSBpbmRleCBpbiB2Lm5hbWVbJHt0Lm5hbWV9XWApO3I9ZG4ociksbC5wdXNoKHIpfXZhciBpLGF9KSk7bGV0IHA9ZWUobCk+MDtyZXR1cm57cGF0aDppLGJBbGxFeGlzdDphLGJBbGxTaXplOmMsYkFsbEhhc2g6ZixiU2xzOnAsc2xrczpsfX07CgoKbGV0IGluc3RhbmNlID0gbnVsbApmdW5jdGlvbiBpbml0KGlucHV0KXsKCiAgICAvL2luaXQKICAgIGxldCByCiAgICAKICAgICAgICByID0gewogICAgICAgICAgICBtYWluOiBjaGVja1RvdGFsSGFzaAogICAgICAgIH0KICAgICAgICAKCiAgICAvL29uCiAgICAKCiAgICAvL3NhdmUKICAgIGluc3RhbmNlID0gcgoKfQoKZnVuY3Rpb24gc2VuZE1lc3NhZ2UoZGF0YSkgewogICAgCiAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKQogICAgICAgIAp9Cgphc3luYyBmdW5jdGlvbiBydW4oZGF0YSkgewogICAgLy8gY29uc29sZS5sb2coJ2lubmVyIHdvcmtlciBydW4nLGRhdGEpCgogICAgLy9tb2RlCiAgICBsZXQgbW9kZSA9IGRhdGEubW9kZQoKICAgIC8vY2hlY2sKICAgIGlmKG1vZGUgIT09ICdpbml0JyAmJiBtb2RlICE9PSAnY2FsbCcpewogICAgICAgIHJldHVybgogICAgfQoKICAgIC8vaW5pdAogICAgaWYobW9kZSA9PT0gJ2luaXQnKXsKICAgICAgICAKICAgICAgICB0cnl7CgogICAgICAgICAgICAvL3R5cGUKICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhLnR5cGUKCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAogICAgCiAgICAgICAgICAgIC8vaW5zdGFuY2UKICAgICAgICAgICAgaWYodHlwZSA9PT0gJ2Z1bmN0aW9uJyl7CiAgICAgICAgICAgICAgICBpbml0KC4uLmlucHV0KQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gJ29iamVjdCcpewogICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBjaGVja1RvdGFsSGFzaAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBjYXRjaChlcnIpewogICAgICAgIAogICAgICAgICAgICAvL3NlbmRNZXNzYWdlCiAgICAgICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgICAgICBtb2RlOiAnZW1pdCcsCiAgICAgICAgICAgICAgICBldk5hbWU6ICdlcnJvcicsCiAgICAgICAgICAgICAgICBtc2c6IGVyciwKICAgICAgICAgICAgfQogICAgICAgICAgICBzZW5kTWVzc2FnZShyZXMpCgogICAgICAgIH0KICAgICAgICAgICAgCiAgICB9CgogICAgLy9jaGVjawogICAgaWYobW9kZSA9PT0gJ2NhbGwnKXsKICAgICAgICBsZXQgc3RhdGUgPSAnJwogICAgICAgIGxldCBtc2cgPSBudWxsCgogICAgICAgIHRyeXsKCiAgICAgICAgICAgIC8vZnVuCiAgICAgICAgICAgIGxldCBmdW4gPSBpbnN0YW5jZVtkYXRhLmZ1bl0KCiAgICAgICAgICAgIC8vaW5wdXQKICAgICAgICAgICAgbGV0IGlucHV0ID0gZGF0YS5pbnB1dAoKICAgICAgICAgICAgLy9leGVjCiAgICAgICAgICAgIGF3YWl0IGZ1biguLi5pbnB1dCkKICAgICAgICAgICAgICAgIC50aGVuKChzdWMpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nc3VjY2VzcycKICAgICAgICAgICAgICAgICAgICBtc2c9c3VjCiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICBzdGF0ZT0nZXJyb3InCiAgICAgICAgICAgICAgICAgICAgbXNnPWVycgogICAgICAgICAgICAgICAgfSkKCiAgICAgICAgfQogICAgICAgIGNhdGNoKGVycil7CiAgICAgICAgICAgIHN0YXRlID0gJ2Vycm9yJwogICAgICAgICAgICBtc2cgPSBlcnIKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy9zZW5kTWVzc2FnZQogICAgICAgIGxldCByZXMgPSB7CiAgICAgICAgICAgIG1vZGU6ICdyZXR1cm4nLAogICAgICAgICAgICBpZDogZGF0YS5pZCwKICAgICAgICAgICAgZnVuOiBkYXRhLmZ1biwKICAgICAgICAgICAgc3RhdGUsCiAgICAgICAgICAgIG1zZywKICAgICAgICB9CiAgICAgICAgc2VuZE1lc3NhZ2UocmVzKQoKICAgIH0KCn0KCmZ1bmN0aW9uIHJlY3ZNZXNzYWdlKGRhdGEpIHsKICAgIC8vIGNvbnNvbGUubG9nKCdpbm5lciB3b3JrZXIgcmVjdjonLCBkYXRhKQoKICAgIC8vZGF0YVJlY3YKICAgIGxldCBkYXRhUmVjdiA9IGRhdGEKCiAgICAvL3J1bgogICAgcnVuKGRhdGFSZWN2KQoKfQoKCiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICByZWN2TWVzc2FnZShlLmRhdGEpCiAgICAgICAgfQogICAgICAgIAoKdHJ5ewogICAgcHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgKGVycikgPT4gewogICAgICAgIGNvbnNvbGUubG9nKCdpbm5lcjp1bmhhbmRsZWRSZWplY3Rpb24nLCBlcnIpCiAgICB9KQogICAgcHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCAoZXJyKSA9PiB7CiAgICAgICAgY29uc29sZS5sb2coJ2lubmVyOnVuY2F1Z2h0RXhjZXB0aW9uJywgZXJyKQogICAgfSkKICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uTW9uaXRvcicsIChlcnIpID0+IHsKICAgICAgICBjb25zb2xlLmxvZygnaW5uZXI6dW5jYXVnaHRFeGNlcHRpb25Nb25pdG9yJywgZXJyKQogICAgfSkKfQpjYXRjaChlcnIpe30KCg==");function s(){let s=new T,w=function(M){try{let s=new Blob([M]),w=window.URL||window.webkitURL;return new Worker(w.createObjectURL(s))}catch(M){I(M)}}(M);if(!w)return I("invalid worker"),null;function L(){let M=function(){let M,s,w=new Promise((function(){M=arguments[0],s=arguments[1]}));return w.resolve=M,w.reject=s,w}(),L=function(){let M=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10,s=[],w="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),L=w.length;for(let I=0;I<M;I++)s[I]=w[0|Math.random()*L];return s.join("")}(),I={mode:"call",id:L,fun:"main",input:[...arguments]};return w.postMessage(I),s.once(L,(s=>{"success"===s.state?M.resolve(s.msg):M.reject(s.msg)})),M}function I(M){s.emit("error",M)}return w.onmessage=function(M){!function(M){let w=M,L=w.mode;"emit"!==L&&"return"!==L||("emit"===L&&s.emit(w.evName,w.msg),"return"===L&&s.emit(w.id,w))}(M.data)},w.onerror=I,w.onmessageerror=function(M){I(M.data)},function(){let M={mode:"init",type:"function",input:[...arguments]};w.postMessage(M)}([...arguments]),s.main=L,s.main=L,s.terminate=function(){w?(w.terminate(),w=void 0):I("worker has been terminated")},s}Y=async function(){let M=[...arguments],w=s();return await w.main(...M).finally((()=>{w.terminate()}))}}();try{process.on("unhandledRejection",(M=>{console.log("outer:unhandledRejection",M)})),process.on("uncaughtException",(M=>{console.log("outer:uncaughtException",M)})),process.on("uncaughtExceptionMonitor",(M=>{console.log("outer:uncaughtExceptionMonitor",M)}))}catch(M){}return Y}()}({get exports(){return L},set exports(M){L=M}});var I=L;let D;return D="undefined"!=typeof window&&void 0!==window.document?I:w,D}));
|