vitest 0.5.1 → 0.5.4
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/dist/cli-api-682b9694.js +10512 -0
- package/dist/cli.js +19 -1194
- package/dist/config.d.ts +2 -0
- package/dist/{diff-9b6e405f.js → diff-d3ddd21a.js} +3 -3
- package/dist/entry.js +10 -7
- package/dist/{globals-a8ef1d11.js → globals-75ad6839.js} +5 -5
- package/dist/{index-6fc76077.js → index-013ecdfe.js} +4 -4
- package/dist/{index-82d1238b.js → index-072c45fd.js} +5 -5
- package/dist/index-0996637f.js +1111 -0
- package/dist/index-0bdb518d.js +42 -0
- package/dist/{index-8241b65e.js → index-1945a7c3.js} +4 -5
- package/dist/index.d.ts +21 -2
- package/dist/index.js +4 -4
- package/dist/node.d.ts +11 -1
- package/dist/node.js +19 -15
- package/dist/{setup-e1322df2.js → setup-047a81dd.js} +3 -3
- package/dist/{source-map-1d79467f.js → source-map-b4f7fd10.js} +2 -2
- package/dist/vi-a4ac529d.js +5946 -0
- package/dist/worker.js +1 -1
- package/package.json +3 -3
- package/dist/create-7fef55ec.js +0 -9318
- package/dist/index-3a7599dc.js +0 -333
- package/dist/index-6e709f57.js +0 -782
- package/dist/index-dbe23279.js +0 -42
- package/dist/vi-669f0e0b.js +0 -5943
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import require$$0 from 'readline';
|
|
2
2
|
import require$$2 from 'events';
|
|
3
3
|
|
|
4
4
|
function _mergeNamespaces(n, m) {
|
|
@@ -404,7 +404,7 @@ var util$1 = {
|
|
|
404
404
|
entriesToDisplay: entriesToDisplay$7
|
|
405
405
|
};
|
|
406
406
|
|
|
407
|
-
const readline$1 =
|
|
407
|
+
const readline$1 = require$$0;
|
|
408
408
|
|
|
409
409
|
const _require$9 = util$1,
|
|
410
410
|
action$2 = _require$9.action;
|
|
@@ -3283,7 +3283,7 @@ var util = {
|
|
|
3283
3283
|
entriesToDisplay: entriesToDisplay$3
|
|
3284
3284
|
};
|
|
3285
3285
|
|
|
3286
|
-
const readline =
|
|
3286
|
+
const readline = require$$0;
|
|
3287
3287
|
const { action } = util;
|
|
3288
3288
|
const EventEmitter = require$$2;
|
|
3289
3289
|
const { beep, cursor: cursor$9 } = src;
|
|
@@ -5704,5 +5704,5 @@ var index = /*#__PURE__*/Object.freeze(/*#__PURE__*/_mergeNamespaces({
|
|
|
5704
5704
|
'default': prompts
|
|
5705
5705
|
}, [prompts]));
|
|
5706
5706
|
|
|
5707
|
-
export { index as i };
|
|
5708
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtODJkMTIzOGIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9rbGV1ckAzLjAuMy9ub2RlX21vZHVsZXMva2xldXIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvYWN0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL3N0cmlwLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Npc3RlcmFuc2lAMS4wLjUvbm9kZV9tb2R1bGVzL3Npc3RlcmFuc2kvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2NsZWFyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2ZpZ3VyZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvc3R5bGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvbGluZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvd3JhcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvdXRpbC9lbnRyaWVzVG9EaXNwbGF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9wcm9tcHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2VsZW1lbnRzL3RleHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2VsZW1lbnRzL3NlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvdG9nZ2xlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvZGF0ZXBhcnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2RhdGVwYXJ0cy9tZXJpZGllbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL2RheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL2hvdXJzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvbWlsbGlzZWNvbmRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvbWludXRlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL21vbnRoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvc2Vjb25kcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL3llYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2RhdGVwYXJ0cy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvZGF0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvbnVtYmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9tdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvYXV0b2NvbXBsZXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9hdXRvY29tcGxldGVNdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvY29uZmlybS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3Byb21wdHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvYWN0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvc3RyaXAuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9jbGVhci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2ZpZ3VyZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9zdHlsZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2xpbmVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvd3JhcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2VudHJpZXNUb0Rpc3BsYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9wcm9tcHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvdGV4dC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9zZWxlY3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvdG9nZ2xlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2RhdGVwYXJ0cy9kYXRlcGFydC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbWVyaWRpZW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL2RheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvaG91cnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL21pbGxpc2Vjb25kcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbWludXRlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbW9udGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL3NlY29uZHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL3llYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2RhdGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvbnVtYmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL211bHRpc2VsZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9hdXRvY29tcGxldGVNdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9jb25maXJtLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3Byb21wdHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHsgRk9SQ0VfQ09MT1IsIE5PREVfRElTQUJMRV9DT0xPUlMsIFRFUk0gfSA9IHByb2Nlc3MuZW52O1xuXG5jb25zdCAkID0ge1xuXHRlbmFibGVkOiAhTk9ERV9ESVNBQkxFX0NPTE9SUyAmJiBURVJNICE9PSAnZHVtYicgJiYgRk9SQ0VfQ09MT1IgIT09ICcwJyxcblxuXHQvLyBtb2RpZmllcnNcblx0cmVzZXQ6IGluaXQoMCwgMCksXG5cdGJvbGQ6IGluaXQoMSwgMjIpLFxuXHRkaW06IGluaXQoMiwgMjIpLFxuXHRpdGFsaWM6IGluaXQoMywgMjMpLFxuXHR1bmRlcmxpbmU6IGluaXQoNCwgMjQpLFxuXHRpbnZlcnNlOiBpbml0KDcsIDI3KSxcblx0aGlkZGVuOiBpbml0KDgsIDI4KSxcblx0c3RyaWtldGhyb3VnaDogaW5pdCg5LCAyOSksXG5cblx0Ly8gY29sb3JzXG5cdGJsYWNrOiBpbml0KDMwLCAzOSksXG5cdHJlZDogaW5pdCgzMSwgMzkpLFxuXHRncmVlbjogaW5pdCgzMiwgMzkpLFxuXHR5ZWxsb3c6IGluaXQoMzMsIDM5KSxcblx0Ymx1ZTogaW5pdCgzNCwgMzkpLFxuXHRtYWdlbnRhOiBpbml0KDM1LCAzOSksXG5cdGN5YW46IGluaXQoMzYsIDM5KSxcblx0d2hpdGU6IGluaXQoMzcsIDM5KSxcblx0Z3JheTogaW5pdCg5MCwgMzkpLFxuXHRncmV5OiBpbml0KDkwLCAzOSksXG5cblx0Ly8gYmFja2dyb3VuZCBjb2xvcnNcblx0YmdCbGFjazogaW5pdCg0MCwgNDkpLFxuXHRiZ1JlZDogaW5pdCg0MSwgNDkpLFxuXHRiZ0dyZWVuOiBpbml0KDQyLCA0OSksXG5cdGJnWWVsbG93OiBpbml0KDQzLCA0OSksXG5cdGJnQmx1ZTogaW5pdCg0NCwgNDkpLFxuXHRiZ01hZ2VudGE6IGluaXQoNDUsIDQ5KSxcblx0YmdDeWFuOiBpbml0KDQ2LCA0OSksXG5cdGJnV2hpdGU6IGluaXQoNDcsIDQ5KVxufTtcblxuZnVuY3Rpb24gcnVuKGFyciwgc3RyKSB7XG5cdGxldCBpPTAsIHRtcCwgYmVnPScnLCBlbmQ9Jyc7XG5cdGZvciAoOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0dG1wID0gYXJyW2ldO1xuXHRcdGJlZyArPSB0bXAub3Blbjtcblx0XHRlbmQgKz0gdG1wLmNsb3NlO1xuXHRcdGlmIChzdHIuaW5jbHVkZXModG1wLmNsb3NlKSkge1xuXHRcdFx0c3RyID0gc3RyLnJlcGxhY2UodG1wLnJneCwgdG1wLmNsb3NlICsgdG1wLm9wZW4pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYmVnICsgc3RyICsgZW5kO1xufVxuXG5mdW5jdGlvbiBjaGFpbihoYXMsIGtleXMpIHtcblx0bGV0IGN0eCA9IHsgaGFzLCBrZXlzIH07XG5cblx0Y3R4LnJlc2V0ID0gJC5yZXNldC5iaW5kKGN0eCk7XG5cdGN0eC5ib2xkID0gJC5ib2xkLmJpbmQoY3R4KTtcblx0Y3R4LmRpbSA9ICQuZGltLmJpbmQoY3R4KTtcblx0Y3R4Lml0YWxpYyA9ICQuaXRhbGljLmJpbmQoY3R4KTtcblx0Y3R4LnVuZGVybGluZSA9ICQudW5kZXJsaW5lLmJpbmQoY3R4KTtcblx0Y3R4LmludmVyc2UgPSAkLmludmVyc2UuYmluZChjdHgpO1xuXHRjdHguaGlkZGVuID0gJC5oaWRkZW4uYmluZChjdHgpO1xuXHRjdHguc3RyaWtldGhyb3VnaCA9ICQuc3RyaWtldGhyb3VnaC5iaW5kKGN0eCk7XG5cblx0Y3R4LmJsYWNrID0gJC5ibGFjay5iaW5kKGN0eCk7XG5cdGN0eC5yZWQgPSAkLnJlZC5iaW5kKGN0eCk7XG5cdGN0eC5ncmVlbiA9ICQuZ3JlZW4uYmluZChjdHgpO1xuXHRjdHgueWVsbG93ID0gJC55ZWxsb3cuYmluZChjdHgpO1xuXHRjdHguYmx1ZSA9ICQuYmx1ZS5iaW5kKGN0eCk7XG5cdGN0eC5tYWdlbnRhID0gJC5tYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmN5YW4gPSAkLmN5YW4uYmluZChjdHgpO1xuXHRjdHgud2hpdGUgPSAkLndoaXRlLmJpbmQoY3R4KTtcblx0Y3R4LmdyYXkgPSAkLmdyYXkuYmluZChjdHgpO1xuXHRjdHguZ3JleSA9ICQuZ3JleS5iaW5kKGN0eCk7XG5cblx0Y3R4LmJnQmxhY2sgPSAkLmJnQmxhY2suYmluZChjdHgpO1xuXHRjdHguYmdSZWQgPSAkLmJnUmVkLmJpbmQoY3R4KTtcblx0Y3R4LmJnR3JlZW4gPSAkLmJnR3JlZW4uYmluZChjdHgpO1xuXHRjdHguYmdZZWxsb3cgPSAkLmJnWWVsbG93LmJpbmQoY3R4KTtcblx0Y3R4LmJnQmx1ZSA9ICQuYmdCbHVlLmJpbmQoY3R4KTtcblx0Y3R4LmJnTWFnZW50YSA9ICQuYmdNYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmJnQ3lhbiA9ICQuYmdDeWFuLmJpbmQoY3R4KTtcblx0Y3R4LmJnV2hpdGUgPSAkLmJnV2hpdGUuYmluZChjdHgpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UpIHtcblx0bGV0IGJsayA9IHtcblx0XHRvcGVuOiBgXFx4MWJbJHtvcGVufW1gLFxuXHRcdGNsb3NlOiBgXFx4MWJbJHtjbG9zZX1tYCxcblx0XHRyZ3g6IG5ldyBSZWdFeHAoYFxcXFx4MWJcXFxcWyR7Y2xvc2V9bWAsICdnJylcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uICh0eHQpIHtcblx0XHRpZiAodGhpcyAhPT0gdm9pZCAwICYmIHRoaXMuaGFzICE9PSB2b2lkIDApIHtcblx0XHRcdHRoaXMuaGFzLmluY2x1ZGVzKG9wZW4pIHx8ICh0aGlzLmhhcy5wdXNoKG9wZW4pLHRoaXMua2V5cy5wdXNoKGJsaykpO1xuXHRcdFx0cmV0dXJuIHR4dCA9PT0gdm9pZCAwID8gdGhpcyA6ICQuZW5hYmxlZCA/IHJ1bih0aGlzLmtleXMsIHR4dCsnJykgOiB0eHQrJyc7XG5cdFx0fVxuXHRcdHJldHVybiB0eHQgPT09IHZvaWQgMCA/IGNoYWluKFtvcGVuXSwgW2Jsa10pIDogJC5lbmFibGVkID8gcnVuKFtibGtdLCB0eHQrJycpIDogdHh0KycnO1xuXHR9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9ICQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gKGtleSwgaXNTZWxlY3QpID0+IHtcbiAgaWYgKGtleS5tZXRhICYmIGtleS5uYW1lICE9PSAnZXNjYXBlJykgcmV0dXJuO1xuXG4gIGlmIChrZXkuY3RybCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2EnKSByZXR1cm4gJ2ZpcnN0JztcbiAgICBpZiAoa2V5Lm5hbWUgPT09ICdjJykgcmV0dXJuICdhYm9ydCc7XG4gICAgaWYgKGtleS5uYW1lID09PSAnZCcpIHJldHVybiAnYWJvcnQnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2UnKSByZXR1cm4gJ2xhc3QnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2cnKSByZXR1cm4gJ3Jlc2V0JztcbiAgfVxuXG4gIGlmIChpc1NlbGVjdCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2onKSByZXR1cm4gJ2Rvd24nO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2snKSByZXR1cm4gJ3VwJztcbiAgfVxuXG4gIGlmIChrZXkubmFtZSA9PT0gJ3JldHVybicpIHJldHVybiAnc3VibWl0JztcbiAgaWYgKGtleS5uYW1lID09PSAnZW50ZXInKSByZXR1cm4gJ3N1Ym1pdCc7IC8vIGN0cmwgKyBKXG5cbiAgaWYgKGtleS5uYW1lID09PSAnYmFja3NwYWNlJykgcmV0dXJuICdkZWxldGUnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkZWxldGUnKSByZXR1cm4gJ2RlbGV0ZUZvcndhcmQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdhYm9ydCcpIHJldHVybiAnYWJvcnQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlc2NhcGUnKSByZXR1cm4gJ2V4aXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICd0YWInKSByZXR1cm4gJ25leHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdlZG93bicpIHJldHVybiAnbmV4dFBhZ2UnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdldXAnKSByZXR1cm4gJ3ByZXZQYWdlJzsgLy8gVE9ETyBjcmVhdGUgaG9tZSgpIGluIHByb21wdCB0eXBlcyAoZS5nLiBUZXh0UHJvbXB0KVxuXG4gIGlmIChrZXkubmFtZSA9PT0gJ2hvbWUnKSByZXR1cm4gJ2hvbWUnOyAvLyBUT0RPIGNyZWF0ZSBlbmQoKSBpbiBwcm9tcHQgdHlwZXMgKGUuZy4gVGV4dFByb21wdClcblxuICBpZiAoa2V5Lm5hbWUgPT09ICdlbmQnKSByZXR1cm4gJ2VuZCc7XG4gIGlmIChrZXkubmFtZSA9PT0gJ3VwJykgcmV0dXJuICd1cCc7XG4gIGlmIChrZXkubmFtZSA9PT0gJ2Rvd24nKSByZXR1cm4gJ2Rvd24nO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdyaWdodCcpIHJldHVybiAncmlnaHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdsZWZ0JykgcmV0dXJuICdsZWZ0JztcbiAgcmV0dXJuIGZhbHNlO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyID0+IHtcbiAgY29uc3QgcGF0dGVybiA9IFsnW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KScsICcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUlpjZi1udHFyeT0+PH5dKSknXS5qb2luKCd8Jyk7XG4gIGNvbnN0IFJHWCA9IG5ldyBSZWdFeHAocGF0dGVybiwgJ2cnKTtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyLnJlcGxhY2UoUkdYLCAnJykgOiBzdHI7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRVNDID0gJ1xceDFCJztcbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbmNvbnN0IGJlZXAgPSAnXFx1MDAwNyc7XG5cbmNvbnN0IGN1cnNvciA9IHtcbiAgdG8oeCwgeSkge1xuICAgIGlmICgheSkgcmV0dXJuIGAke0NTSX0ke3ggKyAxfUdgO1xuICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcbiAgfSxcbiAgbW92ZSh4LCB5KSB7XG4gICAgbGV0IHJldCA9ICcnO1xuXG4gICAgaWYgKHggPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXh9RGA7XG4gICAgZWxzZSBpZiAoeCA+IDApIHJldCArPSBgJHtDU0l9JHt4fUNgO1xuXG4gICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gICAgZWxzZSBpZiAoeSA+IDApIHJldCArPSBgJHtDU0l9JHt5fUJgO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUFgLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1CYCxcbiAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG4gIGJhY2t3YXJkOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1EYCxcbiAgbmV4dExpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1FYC5yZXBlYXQoY291bnQpLFxuICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG4gIGxlZnQ6IGAke0NTSX1HYCxcbiAgaGlkZTogYCR7Q1NJfT8yNWxgLFxuICBzaG93OiBgJHtDU0l9PzI1aGAsXG4gIHNhdmU6IGAke0VTQ303YCxcbiAgcmVzdG9yZTogYCR7RVNDfThgXG59XG5cbmNvbnN0IHNjcm9sbCA9IHtcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX1TYC5yZXBlYXQoY291bnQpLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9VGAucmVwZWF0KGNvdW50KVxufVxuXG5jb25zdCBlcmFzZSA9IHtcbiAgc2NyZWVuOiBgJHtDU0l9MkpgLFxuICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfTFKYC5yZXBlYXQoY291bnQpLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9SmAucmVwZWF0KGNvdW50KSxcbiAgbGluZTogYCR7Q1NJfTJLYCxcbiAgbGluZUVuZDogYCR7Q1NJfUtgLFxuICBsaW5lU3RhcnQ6IGAke0NTSX0xS2AsXG4gIGxpbmVzKGNvdW50KSB7XG4gICAgbGV0IGNsZWFyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuICAgICAgY2xlYXIgKz0gdGhpcy5saW5lICsgKGkgPCBjb3VudCAtIDEgPyBjdXJzb3IudXAoKSA6ICcnKTtcbiAgICBpZiAoY291bnQpXG4gICAgICBjbGVhciArPSBjdXJzb3IubGVmdDtcbiAgICByZXR1cm4gY2xlYXI7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGN1cnNvciwgc2Nyb2xsLCBlcmFzZSwgYmVlcCB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTsgaWYgKCFpdCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBpdC5jYWxsKG8pOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3Qgd2lkdGggPSBzdHIgPT4gWy4uLnN0cmlwKHN0cildLmxlbmd0aDtcbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByb21wdFxuICogQHBhcmFtIHtudW1iZXJ9IHBlckxpbmVcbiAqL1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHByb21wdCwgcGVyTGluZSkge1xuICBpZiAoIXBlckxpbmUpIHJldHVybiBlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApO1xuICBsZXQgcm93cyA9IDA7XG4gIGNvbnN0IGxpbmVzID0gcHJvbXB0LnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGxpbmVzKSxcbiAgICAgIF9zdGVwO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgIGxldCBsaW5lID0gX3N0ZXAudmFsdWU7XG4gICAgICByb3dzICs9IDEgKyBNYXRoLmZsb29yKE1hdGgubWF4KHdpZHRoKGxpbmUpIC0gMSwgMCkgLyBwZXJMaW5lKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvci5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yLmYoKTtcbiAgfVxuXG4gIHJldHVybiBlcmFzZS5saW5lcyhyb3dzKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtYWluID0ge1xuICBhcnJvd1VwOiAn4oaRJyxcbiAgYXJyb3dEb3duOiAn4oaTJyxcbiAgYXJyb3dMZWZ0OiAn4oaQJyxcbiAgYXJyb3dSaWdodDogJ+KGkicsXG4gIHJhZGlvT246ICfil4knLFxuICByYWRpb09mZjogJ+KXrycsXG4gIHRpY2s6ICfinJQnLFxuICBjcm9zczogJ+KclicsXG4gIGVsbGlwc2lzOiAn4oCmJyxcbiAgcG9pbnRlclNtYWxsOiAn4oC6JyxcbiAgbGluZTogJ+KUgCcsXG4gIHBvaW50ZXI6ICfina8nXG59O1xuY29uc3Qgd2luID0ge1xuICBhcnJvd1VwOiBtYWluLmFycm93VXAsXG4gIGFycm93RG93bjogbWFpbi5hcnJvd0Rvd24sXG4gIGFycm93TGVmdDogbWFpbi5hcnJvd0xlZnQsXG4gIGFycm93UmlnaHQ6IG1haW4uYXJyb3dSaWdodCxcbiAgcmFkaW9PbjogJygqKScsXG4gIHJhZGlvT2ZmOiAnKCApJyxcbiAgdGljazogJ+KImicsXG4gIGNyb3NzOiAnw5cnLFxuICBlbGxpcHNpczogJy4uLicsXG4gIHBvaW50ZXJTbWFsbDogJ8K7JyxcbiAgbGluZTogJ+KUgCcsXG4gIHBvaW50ZXI6ICc+J1xufTtcbmNvbnN0IGZpZ3VyZXMgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luIDogbWFpbjtcbm1vZHVsZS5leHBvcnRzID0gZmlndXJlczsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGMgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBmaWd1cmVzID0gcmVxdWlyZSgnLi9maWd1cmVzJyk7IC8vIHJlbmRlcmluZyB1c2VyIGlucHV0LlxuXG5cbmNvbnN0IHN0eWxlcyA9IE9iamVjdC5mcmVlemUoe1xuICBwYXNzd29yZDoge1xuICAgIHNjYWxlOiAxLFxuICAgIHJlbmRlcjogaW5wdXQgPT4gJyonLnJlcGVhdChpbnB1dC5sZW5ndGgpXG4gIH0sXG4gIGVtb2ppOiB7XG4gICAgc2NhbGU6IDIsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiAn8J+YgycucmVwZWF0KGlucHV0Lmxlbmd0aClcbiAgfSxcbiAgaW52aXNpYmxlOiB7XG4gICAgc2NhbGU6IDAsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiAnJ1xuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgc2NhbGU6IDEsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiBgJHtpbnB1dH1gXG4gIH1cbn0pO1xuXG5jb25zdCByZW5kZXIgPSB0eXBlID0+IHN0eWxlc1t0eXBlXSB8fCBzdHlsZXMuZGVmYXVsdDsgLy8gaWNvbiB0byBzaWduYWxpemUgYSBwcm9tcHQuXG5cblxuY29uc3Qgc3ltYm9scyA9IE9iamVjdC5mcmVlemUoe1xuICBhYm9ydGVkOiBjLnJlZChmaWd1cmVzLmNyb3NzKSxcbiAgZG9uZTogYy5ncmVlbihmaWd1cmVzLnRpY2spLFxuICBleGl0ZWQ6IGMueWVsbG93KGZpZ3VyZXMuY3Jvc3MpLFxuICBkZWZhdWx0OiBjLmN5YW4oJz8nKVxufSk7XG5cbmNvbnN0IHN5bWJvbCA9IChkb25lLCBhYm9ydGVkLCBleGl0ZWQpID0+IGFib3J0ZWQgPyBzeW1ib2xzLmFib3J0ZWQgOiBleGl0ZWQgPyBzeW1ib2xzLmV4aXRlZCA6IGRvbmUgPyBzeW1ib2xzLmRvbmUgOiBzeW1ib2xzLmRlZmF1bHQ7IC8vIGJldHdlZW4gdGhlIHF1ZXN0aW9uIGFuZCB0aGUgdXNlcidzIGlucHV0LlxuXG5cbmNvbnN0IGRlbGltaXRlciA9IGNvbXBsZXRpbmcgPT4gYy5ncmF5KGNvbXBsZXRpbmcgPyBmaWd1cmVzLmVsbGlwc2lzIDogZmlndXJlcy5wb2ludGVyU21hbGwpO1xuXG5jb25zdCBpdGVtID0gKGV4cGFuZGFibGUsIGV4cGFuZGVkKSA9PiBjLmdyYXkoZXhwYW5kYWJsZSA/IGV4cGFuZGVkID8gZmlndXJlcy5wb2ludGVyU21hbGwgOiAnKycgOiBmaWd1cmVzLmxpbmUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc3R5bGVzLFxuICByZW5kZXIsXG4gIHN5bWJvbHMsXG4gIHN5bWJvbCxcbiAgZGVsaW1pdGVyLFxuICBpdGVtXG59OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dcbiAqIEBwYXJhbSB7bnVtYmVyfSBwZXJMaW5lXG4gKi9cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtc2csIHBlckxpbmUpIHtcbiAgbGV0IGxpbmVzID0gU3RyaW5nKHN0cmlwKG1zZykgfHwgJycpLnNwbGl0KC9cXHI/XFxuLyk7XG4gIGlmICghcGVyTGluZSkgcmV0dXJuIGxpbmVzLmxlbmd0aDtcbiAgcmV0dXJuIGxpbmVzLm1hcChsID0+IE1hdGguY2VpbChsLmxlbmd0aCAvIHBlckxpbmUpKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIFRoZSBtZXNzYWdlIHRvIHdyYXBcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtvcHRzLm1hcmdpbl0gTGVmdCBtYXJnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLndpZHRoIE1heGltdW0gY2hhcmFjdGVycyBwZXIgbGluZSBpbmNsdWRpbmcgdGhlIG1hcmdpblxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gKG1zZywgb3B0cyA9IHt9KSA9PiB7XG4gIGNvbnN0IHRhYiA9IE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhcnNlSW50KG9wdHMubWFyZ2luKSkgPyBuZXcgQXJyYXkocGFyc2VJbnQob3B0cy5tYXJnaW4pKS5maWxsKCcgJykuam9pbignJykgOiBvcHRzLm1hcmdpbiB8fCAnJztcbiAgY29uc3Qgd2lkdGggPSBvcHRzLndpZHRoO1xuICByZXR1cm4gKG1zZyB8fCAnJykuc3BsaXQoL1xccj9cXG4vZykubWFwKGxpbmUgPT4gbGluZS5zcGxpdCgvXFxzKy9nKS5yZWR1Y2UoKGFyciwgdykgPT4ge1xuICAgIGlmICh3Lmxlbmd0aCArIHRhYi5sZW5ndGggPj0gd2lkdGggfHwgYXJyW2Fyci5sZW5ndGggLSAxXS5sZW5ndGggKyB3Lmxlbmd0aCArIDEgPCB3aWR0aCkgYXJyW2Fyci5sZW5ndGggLSAxXSArPSBgICR7d31gO2Vsc2UgYXJyLnB1c2goYCR7dGFifSR7d31gKTtcbiAgICByZXR1cm4gYXJyO1xuICB9LCBbdGFiXSkuam9pbignXFxuJykpLmpvaW4oJ1xcbicpO1xufTsiLCIndXNlIHN0cmljdCc7XG4vKipcbiAqIERldGVybWluZSB3aGF0IGVudHJpZXMgc2hvdWxkIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLCBiYXNlZCBvbiB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBpbmRleCBhbmQgdGhlIG1heGltdW0gdmlzaWJsZS4gVXNlZCBpbiBsaXN0LWJhc2VkXG4gKiBwcm9tcHRzIGxpa2UgYHNlbGVjdGAgYW5kIGBtdWx0aXNlbGVjdGAuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnNvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGVudHJ5XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWwgdGhlIHRvdGFsIGVudHJpZXMgYXZhaWxhYmxlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4VmlzaWJsZV0gdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGJlIGRpc3BsYXllZFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gKGN1cnNvciwgdG90YWwsIG1heFZpc2libGUpID0+IHtcbiAgbWF4VmlzaWJsZSA9IG1heFZpc2libGUgfHwgdG90YWw7XG4gIGxldCBzdGFydEluZGV4ID0gTWF0aC5taW4odG90YWwgLSBtYXhWaXNpYmxlLCBjdXJzb3IgLSBNYXRoLmZsb29yKG1heFZpc2libGUgLyAyKSk7XG4gIGlmIChzdGFydEluZGV4IDwgMCkgc3RhcnRJbmRleCA9IDA7XG4gIGxldCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBtYXhWaXNpYmxlLCB0b3RhbCk7XG4gIHJldHVybiB7XG4gICAgc3RhcnRJbmRleCxcbiAgICBlbmRJbmRleFxuICB9O1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhY3Rpb246IHJlcXVpcmUoJy4vYWN0aW9uJyksXG4gIGNsZWFyOiByZXF1aXJlKCcuL2NsZWFyJyksXG4gIHN0eWxlOiByZXF1aXJlKCcuL3N0eWxlJyksXG4gIHN0cmlwOiByZXF1aXJlKCcuL3N0cmlwJyksXG4gIGZpZ3VyZXM6IHJlcXVpcmUoJy4vZmlndXJlcycpLFxuICBsaW5lczogcmVxdWlyZSgnLi9saW5lcycpLFxuICB3cmFwOiByZXF1aXJlKCcuL3dyYXAnKSxcbiAgZW50cmllc1RvRGlzcGxheTogcmVxdWlyZSgnLi9lbnRyaWVzVG9EaXNwbGF5Jylcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCByZWFkbGluZSA9IHJlcXVpcmUoJ3JlYWRsaW5lJyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgYWN0aW9uID0gX3JlcXVpcmUuYWN0aW9uO1xuXG5jb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgYmVlcCA9IF9yZXF1aXJlMi5iZWVwLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUyLmN1cnNvcjtcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuLyoqXG4gKiBCYXNlIHByb21wdCBza2VsZXRvblxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKi9cblxuXG5jbGFzcyBQcm9tcHQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZmlyc3RSZW5kZXIgPSB0cnVlO1xuICAgIHRoaXMuaW4gPSBvcHRzLnN0ZGluIHx8IHByb2Nlc3Muc3RkaW47XG4gICAgdGhpcy5vdXQgPSBvcHRzLnN0ZG91dCB8fCBwcm9jZXNzLnN0ZG91dDtcblxuICAgIHRoaXMub25SZW5kZXIgPSAob3B0cy5vblJlbmRlciB8fCAoKCkgPT4gdm9pZCAwKSkuYmluZCh0aGlzKTtcblxuICAgIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICAgIGlucHV0OiB0aGlzLmluLFxuICAgICAgZXNjYXBlQ29kZVRpbWVvdXQ6IDUwXG4gICAgfSk7XG4gICAgcmVhZGxpbmUuZW1pdEtleXByZXNzRXZlbnRzKHRoaXMuaW4sIHJsKTtcbiAgICBpZiAodGhpcy5pbi5pc1RUWSkgdGhpcy5pbi5zZXRSYXdNb2RlKHRydWUpO1xuICAgIGNvbnN0IGlzU2VsZWN0ID0gWydTZWxlY3RQcm9tcHQnLCAnTXVsdGlzZWxlY3RQcm9tcHQnXS5pbmRleE9mKHRoaXMuY29uc3RydWN0b3IubmFtZSkgPiAtMTtcblxuICAgIGNvbnN0IGtleXByZXNzID0gKHN0ciwga2V5KSA9PiB7XG4gICAgICBsZXQgYSA9IGFjdGlvbihrZXksIGlzU2VsZWN0KTtcblxuICAgICAgaWYgKGEgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuXyAmJiB0aGlzLl8oc3RyLCBrZXkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpc1thXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzW2FdKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJlbGwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMub3V0LndyaXRlKGN1cnNvci5zaG93KTtcbiAgICAgIHRoaXMuaW4ucmVtb3ZlTGlzdGVuZXIoJ2tleXByZXNzJywga2V5cHJlc3MpO1xuICAgICAgaWYgKHRoaXMuaW4uaXNUVFkpIHRoaXMuaW4uc2V0UmF3TW9kZShmYWxzZSk7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgdGhpcy5lbWl0KHRoaXMuYWJvcnRlZCA/ICdhYm9ydCcgOiB0aGlzLmV4aXRlZCA/ICdleGl0JyA6ICdzdWJtaXQnLCB0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdGhpcy5pbi5vbigna2V5cHJlc3MnLCBrZXlwcmVzcyk7XG4gIH1cblxuICBmaXJlKCkge1xuICAgIHRoaXMuZW1pdCgnc3RhdGUnLCB7XG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGFib3J0ZWQ6ICEhdGhpcy5hYm9ydGVkLFxuICAgICAgZXhpdGVkOiAhIXRoaXMuZXhpdGVkXG4gICAgfSk7XG4gIH1cblxuICBiZWxsKCkge1xuICAgIHRoaXMub3V0LndyaXRlKGJlZXApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHRoaXMub25SZW5kZXIoY29sb3IpO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLmZpcnN0UmVuZGVyID0gZmFsc2U7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21wdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykgeyB0cnkgeyB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7IHZhciB2YWx1ZSA9IGluZm8udmFsdWU7IH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IHJldHVybjsgfSBpZiAoaW5mby5kb25lKSB7IHJlc29sdmUodmFsdWUpOyB9IGVsc2UgeyBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7IH0gfVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTsgZnVuY3Rpb24gX25leHQodmFsdWUpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpOyB9IGZ1bmN0aW9uIF90aHJvdyhlcnIpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7IH0gX25leHQodW5kZWZpbmVkKTsgfSk7IH07IH1cblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGVyYXNlID0gX3JlcXVpcmUuZXJhc2UsXG4gICAgICBjdXJzb3IgPSBfcmVxdWlyZS5jdXJzb3I7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIHN0eWxlID0gX3JlcXVpcmUyLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZTIuY2xlYXIsXG4gICAgICBsaW5lcyA9IF9yZXF1aXJlMi5saW5lcyxcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZTIuZmlndXJlcztcbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnN0eWxlPSdkZWZhdWx0J10gUmVuZGVyIHN0eWxlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuXG5cbmNsYXNzIFRleHRQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gb3B0cy5pbml0aWFsIHx8IGBgO1xuXG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcblxuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLmVycm9yTXNnID0gb3B0cy5lcnJvciB8fCBgUGxlYXNlIEVudGVyIEEgVmFsaWQgVmFsdWVgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKGBgLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdGhpcy5pbml0aWFsKSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSBjb2xvci5ncmF5KHRoaXMudHJhbnNmb3JtLnJlbmRlcih0aGlzLmluaXRpYWwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXJlZCA9IHRoaXMudHJhbnNmb3JtLnJlbmRlcih2KTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgbGV0IHZhbGlkID0geWllbGQgX3RoaXMudmFsaWRhdG9yKF90aGlzLnZhbHVlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgX3RoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgX3RoaXMyLnZhbHVlID0gX3RoaXMyLnZhbHVlIHx8IF90aGlzMi5pbml0aWFsO1xuICAgICAgX3RoaXMyLmN1cnNvck9mZnNldCA9IDA7XG4gICAgICBfdGhpczIuY3Vyc29yID0gX3RoaXMyLnJlbmRlcmVkLmxlbmd0aDtcbiAgICAgIHlpZWxkIF90aGlzMi52YWxpZGF0ZSgpO1xuXG4gICAgICBpZiAoX3RoaXMyLmVycm9yKSB7XG4gICAgICAgIF90aGlzMi5yZWQgPSB0cnVlO1xuXG4gICAgICAgIF90aGlzMi5maXJlKCk7XG5cbiAgICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMyLmRvbmUgPSB0cnVlO1xuICAgICAgX3RoaXMyLmFib3J0ZWQgPSBmYWxzZTtcblxuICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICBfdGhpczIub3V0LndyaXRlKCdcXG4nKTtcblxuICAgICAgX3RoaXMyLmNsb3NlKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IgKyBuO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ICs9IG47XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGxldCBzMSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMudmFsdWUuc2xpY2UodGhpcy5jdXJzb3IpO1xuICAgIHRoaXMudmFsdWUgPSBgJHtzMX0ke2N9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnBsYWNlaG9sZGVyID8gMCA6IHMxLmxlbmd0aCArIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0N1cnNvckF0U3RhcnQoKSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5jdXJzb3IgLSAxKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc0N1cnNvckF0U3RhcnQoKSkge1xuICAgICAgdGhpcy5jdXJzb3JPZmZzZXQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCsrO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlRm9yd2FyZCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgKiB0aGlzLnNjYWxlID49IHRoaXMucmVuZGVyZWQubGVuZ3RoIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICBsZXQgczEgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgdGhpcy52YWx1ZSA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLnJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdEVuZCgpKSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0Kys7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IoLTEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgKiB0aGlzLnNjYWxlID49IHRoaXMucmVuZGVyZWQubGVuZ3RoIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IoMSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGlzQ3Vyc29yQXRTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJzb3IgPT09IDAgfHwgdGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLmN1cnNvciA9PT0gMTtcbiAgfVxuXG4gIGlzQ3Vyc29yQXRFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3Vyc29yID09PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCB8fCB0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMuY3Vyc29yID09PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCArIDE7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3RSZW5kZXIpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dEVycm9yKSB0aGlzLm91dC53cml0ZShjdXJzb3IuZG93bihsaW5lcyh0aGlzLm91dHB1dEVycm9yLCB0aGlzLm91dC5jb2x1bW5zKSAtIDEpICsgY2xlYXIodGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgc3VwZXIucmVuZGVyKCk7XG4gICAgdGhpcy5vdXRwdXRFcnJvciA9ICcnO1xuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksIHRoaXMucmVkID8gY29sb3IucmVkKHRoaXMucmVuZGVyZWQpIDogdGhpcy5yZW5kZXJlZF0uam9pbihgIGApO1xuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0RXJyb3IgKz0gdGhpcy5lcnJvck1zZy5zcGxpdChgXFxuYCkucmVkdWNlKChhLCBsLCBpKSA9PiBhICsgYFxcbiR7aSA/ICcgJyA6IGZpZ3VyZXMucG9pbnRlclNtYWxsfSAke2NvbG9yLnJlZCgpLml0YWxpYyhsKX1gLCBgYCk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCArIGN1cnNvci5zYXZlICsgdGhpcy5vdXRwdXRFcnJvciArIGN1cnNvci5yZXN0b3JlICsgY3Vyc29yLm1vdmUodGhpcy5jdXJzb3JPZmZzZXQsIDApKTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gVGV4dFByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCcuLi91dGlsJyksXG4gICAgICBzdHlsZSA9IF9yZXF1aXJlLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZS5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZS5maWd1cmVzLFxuICAgICAgd3JhcCA9IF9yZXF1aXJlLndyYXAsXG4gICAgICBlbnRyaWVzVG9EaXNwbGF5ID0gX3JlcXVpcmUuZW50cmllc1RvRGlzcGxheTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUyLmN1cnNvcjtcbi8qKlxuICogU2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbml0aWFsXSBJbmRleCBvZiBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKi9cblxuXG5jbGFzcyBTZWxlY3RQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLm1zZyA9IG9wdHMubWVzc2FnZTtcbiAgICB0aGlzLmhpbnQgPSBvcHRzLmhpbnQgfHwgJy0gVXNlIGFycm93LWtleXMuIFJldHVybiB0byBzdWJtaXQuJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQnO1xuICAgIHRoaXMuY3Vyc29yID0gb3B0cy5pbml0aWFsIHx8IDA7XG4gICAgdGhpcy5jaG9pY2VzID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpIGNoID0ge1xuICAgICAgICB0aXRsZTogY2gsXG4gICAgICAgIHZhbHVlOiBpZHhcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgdmFsdWU6IGNoICYmIChjaC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gaWR4IDogY2gudmFsdWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogY2ggJiYgY2guZGVzY3JpcHRpb24sXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMub3B0aW9uc1BlclBhZ2UgPSBvcHRzLm9wdGlvbnNQZXJQYWdlIHx8IDEwO1xuICAgIHRoaXMudmFsdWUgPSAodGhpcy5jaG9pY2VzW3RoaXMuY3Vyc29yXSB8fCB7fSkudmFsdWU7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbW92ZUN1cnNvcihuKSB7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNob2ljZXNbbl0udmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IoMCk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB0aGlzLmJlbGwoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmNob2ljZXMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciAtIDEpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gdGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKCh0aGlzLmN1cnNvciArIDEpICUgdGhpcy5jaG9pY2VzLmxlbmd0aCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykgcmV0dXJuIHRoaXMuc3VibWl0KCk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNob2ljZXNbdGhpcy5jdXJzb3JdO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTtcblxuICAgIGxldCBfZW50cmllc1RvRGlzcGxheSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMub3B0aW9uc1BlclBhZ2UpLFxuICAgICAgICBzdGFydEluZGV4ID0gX2VudHJpZXNUb0Rpc3BsYXkuc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBfZW50cmllc1RvRGlzcGxheS5lbmRJbmRleDsgLy8gUHJpbnQgcHJvbXB0XG5cblxuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSwgdGhpcy5kb25lID8gdGhpcy5zZWxlY3Rpb24udGl0bGUgOiB0aGlzLnNlbGVjdGlvbi5kaXNhYmxlZCA/IGNvbG9yLnllbGxvdyh0aGlzLndhcm4pIDogY29sb3IuZ3JheSh0aGlzLmhpbnQpXS5qb2luKCcgJyk7IC8vIFByaW50IGNob2ljZXNcblxuICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICB0aGlzLm91dHB1dFRleHQgKz0gJ1xcbic7XG5cbiAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykge1xuICAgICAgICBsZXQgdGl0bGUsXG4gICAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgICBkZXNjID0gJycsXG4gICAgICAgICAgICB2ID0gdGhpcy5jaG9pY2VzW2ldOyAvLyBEZXRlcm1pbmUgd2hldGhlciB0byBkaXNwbGF5IFwibW9yZSBjaG9pY2VzXCIgaW5kaWNhdG9yc1xuXG4gICAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd1VwO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93RG93bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgICAgICAgcHJlZml4ID0gKHRoaXMuY3Vyc29yID09PSBpID8gY29sb3IuYm9sZCgpLmdyYXkoZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICAgICAgICBwcmVmaXggPSAodGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKGZpZ3VyZXMucG9pbnRlcikgKyAnICcgOiAnICAnKSArIHByZWZpeDtcblxuICAgICAgICAgIGlmICh2LmRlc2NyaXB0aW9uICYmIHRoaXMuY3Vyc29yID09PSBpKSB7XG4gICAgICAgICAgICBkZXNjID0gYCAtICR7di5kZXNjcmlwdGlvbn1gO1xuXG4gICAgICAgICAgICBpZiAocHJlZml4Lmxlbmd0aCArIHRpdGxlLmxlbmd0aCArIGRlc2MubGVuZ3RoID49IHRoaXMub3V0LmNvbHVtbnMgfHwgdi5kZXNjcmlwdGlvbi5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgZGVzYyA9ICdcXG4nICsgd3JhcCh2LmRlc2NyaXB0aW9uLCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAzLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgJHtwcmVmaXh9ICR7dGl0bGV9JHtjb2xvci5ncmF5KGRlc2MpfVxcbmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUodGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0UHJvbXB0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZS5zdHlsZSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUuY2xlYXI7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3IsXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZTtcbi8qKlxuICogVG9nZ2xlUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5hY3RpdmU9J25vJ10gQWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5hY3RpdmU9J29mZiddIEluYWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5cbmNsYXNzIFRvZ2dsZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLmFjdGl2ZSA9IG9wdHMuYWN0aXZlIHx8ICdvbic7XG4gICAgdGhpcy5pbmFjdGl2ZSA9IG9wdHMuaW5hY3RpdmUgfHwgJ29mZic7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHRydWUpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmFjdGl2YXRlKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMudmFsdWUgPSAhdGhpcy52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gIXRoaXMudmFsdWU7XG4gICAgfSBlbHNlIGlmIChjID09PSAnMScpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzAnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHJldHVybiB0aGlzLmJlbGwoKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksIHRoaXMudmFsdWUgPyB0aGlzLmluYWN0aXZlIDogY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmluYWN0aXZlKSwgY29sb3IuZ3JheSgnLycpLCB0aGlzLnZhbHVlID8gY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmFjdGl2ZSkgOiB0aGlzLmFjdGl2ZV0uam9pbignICcpO1xuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb2dnbGVQcm9tcHQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jbGFzcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICB0b2tlbixcbiAgICBkYXRlLFxuICAgIHBhcnRzLFxuICAgIGxvY2FsZXNcbiAgfSkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLmRhdGUgPSBkYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzIHx8IFt0aGlzXTtcbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzIHx8IHt9O1xuICB9XG5cbiAgdXAoKSB7fVxuXG4gIGRvd24oKSB7fVxuXG4gIG5leHQoKSB7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHRoaXMucGFydHMuaW5kZXhPZih0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5maW5kKChwYXJ0LCBpZHgpID0+IGlkeCA+IGN1cnJlbnRJZHggJiYgcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge31cblxuICBwcmV2KCkge1xuICAgIGxldCBwYXJ0cyA9IFtdLmNvbmNhdCh0aGlzLnBhcnRzKS5yZXZlcnNlKCk7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHBhcnRzLmluZGV4T2YodGhpcyk7XG4gICAgcmV0dXJuIHBhcnRzLmZpbmQoKHBhcnQsIGlkeCkgPT4gaWR4ID4gY3VycmVudElkeCAmJiBwYXJ0IGluc3RhbmNlb2YgRGF0ZVBhcnQpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXRlUGFydDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBNZXJpZGllbSBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnMoKHRoaXMuZGF0ZS5nZXRIb3VycygpICsgMTIpICUgMjQpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLnVwKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgbWVyaWRpZW0gPSB0aGlzLmRhdGUuZ2V0SG91cnMoKSA+IDEyID8gJ3BtJyA6ICdhbSc7XG4gICAgcmV0dXJuIC9cXEEvLnRlc3QodGhpcy50b2tlbikgPyBtZXJpZGllbS50b1VwcGVyQ2FzZSgpIDogbWVyaWRpZW07XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1lcmlkaWVtOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNvbnN0IHBvcyA9IG4gPT4ge1xuICBuID0gbiAlIDEwO1xuICByZXR1cm4gbiA9PT0gMSA/ICdzdCcgOiBuID09PSAyID8gJ25kJyA6IG4gPT09IDMgPyAncmQnIDogJ3RoJztcbn07XG5cbmNsYXNzIERheSBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RGF0ZSh0aGlzLmRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHRoaXMuZGF0ZS5nZXREYXRlKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZS5nZXREYXRlKCk7XG4gICAgbGV0IGRheSA9IHRoaXMuZGF0ZS5nZXREYXkoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbiA9PT0gJ0REJyA/IFN0cmluZyhkYXRlKS5wYWRTdGFydCgyLCAnMCcpIDogdGhpcy50b2tlbiA9PT0gJ0RvJyA/IGRhdGUgKyBwb3MoZGF0ZSkgOiB0aGlzLnRva2VuID09PSAnZCcgPyBkYXkgKyAxIDogdGhpcy50b2tlbiA9PT0gJ2RkZCcgPyB0aGlzLmxvY2FsZXMud2Vla2RheXNTaG9ydFtkYXldIDogdGhpcy50b2tlbiA9PT0gJ2RkZGQnID8gdGhpcy5sb2NhbGVzLndlZWtkYXlzW2RheV0gOiBkYXRlO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgSG91cnMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHRoaXMuZGF0ZS5nZXRIb3VycygpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRIb3Vycyh0aGlzLmRhdGUuZ2V0SG91cnMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgaG91cnMgPSB0aGlzLmRhdGUuZ2V0SG91cnMoKTtcbiAgICBpZiAoL2gvLnRlc3QodGhpcy50b2tlbikpIGhvdXJzID0gaG91cnMgJSAxMiB8fCAxMjtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKGhvdXJzKS5wYWRTdGFydCgyLCAnMCcpIDogaG91cnM7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhvdXJzOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1pbGxpc2Vjb25kcyBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbGxpc2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC10aGlzLnRva2VuLmxlbmd0aCkpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5kYXRlLmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCg0LCAnMCcpLnN1YnN0cigwLCB0aGlzLnRva2VuLmxlbmd0aCk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1pbGxpc2Vjb25kczsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBNaW51dGVzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNaW51dGVzKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXModGhpcy5kYXRlLmdldE1pbnV0ZXMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtID0gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKG0pLnBhZFN0YXJ0KDIsICcwJykgOiBtO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNaW51dGVzOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1vbnRoIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNb250aCh0aGlzLmRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TW9udGgodGhpcy5kYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHZhbCA9IHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSAtIDE7XG4gICAgdGhpcy5kYXRlLnNldE1vbnRoKHZhbCA8IDAgPyAwIDogdmFsKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtb250aCA9IHRoaXMuZGF0ZS5nZXRNb250aCgpO1xuICAgIGxldCB0bCA9IHRoaXMudG9rZW4ubGVuZ3RoO1xuICAgIHJldHVybiB0bCA9PT0gMiA/IFN0cmluZyhtb250aCArIDEpLnBhZFN0YXJ0KDIsICcwJykgOiB0bCA9PT0gMyA/IHRoaXMubG9jYWxlcy5tb250aHNTaG9ydFttb250aF0gOiB0bCA9PT0gNCA/IHRoaXMubG9jYWxlcy5tb250aHNbbW9udGhdIDogU3RyaW5nKG1vbnRoICsgMSk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRoOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIFNlY29uZHMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy5kYXRlLnNldFNlY29uZHModGhpcy5kYXRlLmdldFNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC0yKSkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHMgPSB0aGlzLmRhdGUuZ2V0U2Vjb25kcygpO1xuICAgIHJldHVybiB0aGlzLnRva2VuLmxlbmd0aCA+IDEgPyBTdHJpbmcocykucGFkU3RhcnQoMiwgJzAnKSA6IHM7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlY29uZHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgWWVhciBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEZ1bGxZZWFyKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodmFsLnN1YnN0cigtNCkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHllYXIgPSBTdHJpbmcodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID09PSAyID8geWVhci5zdWJzdHIoLTIpIDogeWVhcjtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gWWVhcjsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBEYXRlUGFydDogcmVxdWlyZSgnLi9kYXRlcGFydCcpLFxuICBNZXJpZGllbTogcmVxdWlyZSgnLi9tZXJpZGllbScpLFxuICBEYXk6IHJlcXVpcmUoJy4vZGF5JyksXG4gIEhvdXJzOiByZXF1aXJlKCcuL2hvdXJzJyksXG4gIE1pbGxpc2Vjb25kczogcmVxdWlyZSgnLi9taWxsaXNlY29uZHMnKSxcbiAgTWludXRlczogcmVxdWlyZSgnLi9taW51dGVzJyksXG4gIE1vbnRoOiByZXF1aXJlKCcuL21vbnRoJyksXG4gIFNlY29uZHM6IHJlcXVpcmUoJy4vc2Vjb25kcycpLFxuICBZZWFyOiByZXF1aXJlKCcuL3llYXInKVxufTsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpOyB9IH1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7IGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7IGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTsgfSBmdW5jdGlvbiBfdGhyb3coZXJyKSB7IGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpOyB9IF9uZXh0KHVuZGVmaW5lZCk7IH0pOyB9OyB9XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCcuLi91dGlsJyksXG4gICAgICBzdHlsZSA9IF9yZXF1aXJlLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZS5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZS5maWd1cmVzO1xuXG5jb25zdCBfcmVxdWlyZTIgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3I7XG5cbmNvbnN0IF9yZXF1aXJlMyA9IHJlcXVpcmUoJy4uL2RhdGVwYXJ0cycpLFxuICAgICAgRGF0ZVBhcnQgPSBfcmVxdWlyZTMuRGF0ZVBhcnQsXG4gICAgICBNZXJpZGllbSA9IF9yZXF1aXJlMy5NZXJpZGllbSxcbiAgICAgIERheSA9IF9yZXF1aXJlMy5EYXksXG4gICAgICBIb3VycyA9IF9yZXF1aXJlMy5Ib3VycyxcbiAgICAgIE1pbGxpc2Vjb25kcyA9IF9yZXF1aXJlMy5NaWxsaXNlY29uZHMsXG4gICAgICBNaW51dGVzID0gX3JlcXVpcmUzLk1pbnV0ZXMsXG4gICAgICBNb250aCA9IF9yZXF1aXJlMy5Nb250aCxcbiAgICAgIFNlY29uZHMgPSBfcmVxdWlyZTMuU2Vjb25kcyxcbiAgICAgIFllYXIgPSBfcmVxdWlyZTMuWWVhcjtcblxuY29uc3QgcmVnZXggPSAvXFxcXCguKXxcIigoPzpcXFxcW1wiXFxcXF18W15cIl0pKylcInwoRFtEb10/fGR7Myw0fXxkKXwoTXsxLDR9KXwoWVkoPzpZWSk/KXwoW2FBXSl8KFtIaF17MSwyfSl8KG17MSwyfSl8KHN7MSwyfSl8KFN7MSw0fSl8Li9nO1xuY29uc3QgcmVnZXhHcm91cHMgPSB7XG4gIDE6ICh7XG4gICAgdG9rZW5cbiAgfSkgPT4gdG9rZW4ucmVwbGFjZSgvXFxcXCguKS9nLCAnJDEnKSxcbiAgMjogb3B0cyA9PiBuZXcgRGF5KG9wdHMpLFxuICAvLyBEYXkgLy8gVE9ET1xuICAzOiBvcHRzID0+IG5ldyBNb250aChvcHRzKSxcbiAgLy8gTW9udGhcbiAgNDogb3B0cyA9PiBuZXcgWWVhcihvcHRzKSxcbiAgLy8gWWVhclxuICA1OiBvcHRzID0+IG5ldyBNZXJpZGllbShvcHRzKSxcbiAgLy8gQU0vUE0gLy8gVE9ETyAoc3BlY2lhbClcbiAgNjogb3B0cyA9PiBuZXcgSG91cnMob3B0cyksXG4gIC8vIEhvdXJzXG4gIDc6IG9wdHMgPT4gbmV3IE1pbnV0ZXMob3B0cyksXG4gIC8vIE1pbnV0ZXNcbiAgODogb3B0cyA9PiBuZXcgU2Vjb25kcyhvcHRzKSxcbiAgLy8gU2Vjb25kc1xuICA5OiBvcHRzID0+IG5ldyBNaWxsaXNlY29uZHMob3B0cykgLy8gRnJhY3Rpb25hbCBzZWNvbmRzXG5cbn07XG5jb25zdCBkZmx0TG9jYWxlcyA9IHtcbiAgbW9udGhzOiAnSmFudWFyeSxGZWJydWFyeSxNYXJjaCxBcHJpbCxNYXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlcicuc3BsaXQoJywnKSxcbiAgbW9udGhzU2hvcnQ6ICdKYW4sRmViLE1hcixBcHIsTWF5LEp1bixKdWwsQXVnLFNlcCxPY3QsTm92LERlYycuc3BsaXQoJywnKSxcbiAgd2Vla2RheXM6ICdTdW5kYXksTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheScuc3BsaXQoJywnKSxcbiAgd2Vla2RheXNTaG9ydDogJ1N1bixNb24sVHVlLFdlZCxUaHUsRnJpLFNhdCcuc3BsaXQoJywnKVxufTtcbi8qKlxuICogRGF0ZVByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5tYXNrXSBUaGUgZm9ybWF0IG1hc2tcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0cy5sb2NhbGVzXSBUaGUgZGF0ZSBsb2NhbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZXJyb3JdIFRoZSBlcnJvciBtZXNzYWdlIHNob3duIG9uIGludmFsaWQgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgc3VibWl0dGVkIHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5jbGFzcyBEYXRlUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMudHlwZWQgPSAnJztcbiAgICB0aGlzLmxvY2FsZXMgPSBPYmplY3QuYXNzaWduKGRmbHRMb2NhbGVzLCBvcHRzLmxvY2FsZXMpO1xuICAgIHRoaXMuX2RhdGUgPSBvcHRzLmluaXRpYWwgfHwgbmV3IERhdGUoKTtcbiAgICB0aGlzLmVycm9yTXNnID0gb3B0cy5lcnJvciB8fCAnUGxlYXNlIEVudGVyIEEgVmFsaWQgVmFsdWUnO1xuXG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcblxuICAgIHRoaXMubWFzayA9IG9wdHMubWFzayB8fCAnWVlZWS1NTS1ERCBISDptbTpzcyc7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGU7XG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGUpIHtcbiAgICBpZiAoZGF0ZSkgdGhpcy5fZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHNldCBtYXNrKG1hc2spIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMucGFydHMgPSBbXTtcblxuICAgIHdoaWxlIChyZXN1bHQgPSByZWdleC5leGVjKG1hc2spKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZXN1bHQuc2hpZnQoKTtcbiAgICAgIGxldCBpZHggPSByZXN1bHQuZmluZEluZGV4KGdyID0+IGdyICE9IG51bGwpO1xuICAgICAgdGhpcy5wYXJ0cy5wdXNoKGlkeCBpbiByZWdleEdyb3VwcyA/IHJlZ2V4R3JvdXBzW2lkeF0oe1xuICAgICAgICB0b2tlbjogcmVzdWx0W2lkeF0gfHwgbWF0Y2gsXG4gICAgICAgIGRhdGU6IHRoaXMuZGF0ZSxcbiAgICAgICAgcGFydHM6IHRoaXMucGFydHMsXG4gICAgICAgIGxvY2FsZXM6IHRoaXMubG9jYWxlc1xuICAgICAgfSkgOiByZXN1bHRbaWR4XSB8fCBtYXRjaCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcnRzID0gdGhpcy5wYXJ0cy5yZWR1Y2UoKGFyciwgaSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYXJyW2Fyci5sZW5ndGggLSAxXSA9PT0gJ3N0cmluZycpIGFyclthcnIubGVuZ3RoIC0gMV0gKz0gaTtlbHNlIGFyci5wdXNoKGkpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSk7XG4gICAgdGhpcy5wYXJ0cy5zcGxpY2UoMCk7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKC4uLnBhcnRzKTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLnR5cGVkID0gJyc7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuZmluZEluZGV4KHAgPT4gcCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgbGV0IHZhbGlkID0geWllbGQgX3RoaXMudmFsaWRhdG9yKF90aGlzLnZhbHVlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgX3RoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgeWllbGQgX3RoaXMyLnZhbGlkYXRlKCk7XG5cbiAgICAgIGlmIChfdGhpczIuZXJyb3IpIHtcbiAgICAgICAgX3RoaXMyLmNvbG9yID0gJ3JlZCc7XG5cbiAgICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgICBfdGhpczIucmVuZGVyKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpczIuZG9uZSA9IHRydWU7XG4gICAgICBfdGhpczIuYWJvcnRlZCA9IGZhbHNlO1xuXG4gICAgICBfdGhpczIuZmlyZSgpO1xuXG4gICAgICBfdGhpczIucmVuZGVyKCk7XG5cbiAgICAgIF90aGlzMi5vdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBfdGhpczIuY2xvc2UoKTtcbiAgICB9KSgpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnVwKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLmRvd24oKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBsZXQgcHJldiA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnByZXYoKTtcbiAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuaW5kZXhPZihwcmV2KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0ubmV4dCgpO1xuICAgIGlmIChuZXh0ID09IG51bGwpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5wYXJ0cy5pbmRleE9mKG5leHQpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLm5leHQoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IobmV4dCA/IHRoaXMucGFydHMuaW5kZXhPZihuZXh0KSA6IHRoaXMucGFydHMuZmluZEluZGV4KHBhcnQgPT4gcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYykge1xuICAgIGlmICgvXFxkLy50ZXN0KGMpKSB7XG4gICAgICB0aGlzLnR5cGVkICs9IGM7XG4gICAgICB0aGlzLnBhcnRzW3RoaXMuY3Vyc29yXS5zZXRUbyh0aGlzLnR5cGVkKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTsgLy8gUHJpbnQgcHJvbXB0XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcihmYWxzZSksIHRoaXMucGFydHMucmVkdWNlKChhcnIsIHAsIGlkeCkgPT4gYXJyLmNvbmNhdChpZHggPT09IHRoaXMuY3Vyc29yICYmICF0aGlzLmRvbmUgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHAudG9TdHJpbmcoKSkgOiBwKSwgW10pLmpvaW4oJycpXS5qb2luKCcgJyk7IC8vIFByaW50IGVycm9yXG5cbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5vdXRwdXRUZXh0ICs9IHRoaXMuZXJyb3JNc2cuc3BsaXQoJ1xcbicpLnJlZHVjZSgoYSwgbCwgaSkgPT4gYSArIGBcXG4ke2kgPyBgIGAgOiBmaWd1cmVzLnBvaW50ZXJTbWFsbH0gJHtjb2xvci5yZWQoKS5pdGFsaWMobCl9YCwgYGApO1xuICAgIH1cblxuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXRlUHJvbXB0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUuY3Vyc29yLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBmaWd1cmVzID0gX3JlcXVpcmUyLmZpZ3VyZXMsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlMi5jbGVhcixcbiAgICAgIGxpbmVzID0gX3JlcXVpcmUyLmxpbmVzO1xuXG5jb25zdCBpc051bWJlciA9IC9bMC05XS87XG5cbmNvbnN0IGlzRGVmID0gYW55ID0+IGFueSAhPT0gdW5kZWZpbmVkO1xuXG5jb25zdCByb3VuZCA9IChudW1iZXIsIHByZWNpc2lvbikgPT4ge1xuICBsZXQgZmFjdG9yID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBNYXRoLnJvdW5kKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59O1xuLyoqXG4gKiBOdW1iZXJQcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zdHlsZT0nZGVmYXVsdCddIFJlbmRlciBzdHlsZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5tYXg9K0luZmluaXR5XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5taW49LUluZmluaXR5XSBNaW4gdmFsdWVcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZmxvYXQ9ZmFsc2VdIFBhcnNlIGlucHV0IGFzIGZsb2F0c1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLnJvdW5kPTJdIFJvdW5kIGZsb2F0cyB0byB4IGRlY2ltYWxzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMuaW5jcmVtZW50PTFdIE51bWJlciB0byBpbmNyZW1lbnQgYnkgd2hlbiB1c2luZyBhcnJvdy1rZXlzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy52YWxpZGF0ZV0gVmFsaWRhdGUgZnVuY3Rpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVycm9yXSBUaGUgaW52YWxpZCBlcnJvciBsYWJlbFxuICovXG5cblxuY2xhc3MgTnVtYmVyUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBzdHlsZS5yZW5kZXIob3B0cy5zdHlsZSk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gaXNEZWYob3B0cy5pbml0aWFsKSA/IG9wdHMuaW5pdGlhbCA6ICcnO1xuICAgIHRoaXMuZmxvYXQgPSAhIW9wdHMuZmxvYXQ7XG4gICAgdGhpcy5yb3VuZCA9IG9wdHMucm91bmQgfHwgMjtcbiAgICB0aGlzLmluYyA9IG9wdHMuaW5jcmVtZW50IHx8IDE7XG4gICAgdGhpcy5taW4gPSBpc0RlZihvcHRzLm1pbikgPyBvcHRzLm1pbiA6IC1JbmZpbml0eTtcbiAgICB0aGlzLm1heCA9IGlzRGVmKG9wdHMubWF4KSA/IG9wdHMubWF4IDogSW5maW5pdHk7XG4gICAgdGhpcy5lcnJvck1zZyA9IG9wdHMuZXJyb3IgfHwgYFBsZWFzZSBFbnRlciBBIFZhbGlkIFZhbHVlYDtcblxuICAgIHRoaXMudmFsaWRhdG9yID0gb3B0cy52YWxpZGF0ZSB8fCAoKCkgPT4gdHJ1ZSk7XG5cbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy5sYXN0SGl0ID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdiAhPT0gMCkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gY29sb3IuZ3JheSh0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7dGhpcy5pbml0aWFsfWApKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gYGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSB0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7cm91bmQodiwgdGhpcy5yb3VuZCl9YCk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHJvdW5kKHYsIHRoaXMucm91bmQpO1xuICAgIH1cblxuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHBhcnNlKHgpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdCA/IHBhcnNlRmxvYXQoeCkgOiBwYXJzZUludCh4KTtcbiAgfVxuXG4gIHZhbGlkKGMpIHtcbiAgICByZXR1cm4gYyA9PT0gYC1gIHx8IGMgPT09IGAuYCAmJiB0aGlzLmZsb2F0IHx8IGlzTnVtYmVyLnRlc3QoYyk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIGxldCB4ID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0geCAhPT0gYGAgPyB4IDogdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoYFxcbmApO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qICgpIHtcbiAgICAgIGxldCB2YWxpZCA9IHlpZWxkIF90aGlzLnZhbGlkYXRvcihfdGhpcy52YWx1ZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsaWQgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgIF90aGlzLmVycm9yTXNnID0gdmFsaWQ7XG4gICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmVycm9yID0gIXZhbGlkO1xuICAgIH0pKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qICgpIHtcbiAgICAgIHlpZWxkIF90aGlzMi52YWxpZGF0ZSgpO1xuXG4gICAgICBpZiAoX3RoaXMyLmVycm9yKSB7XG4gICAgICAgIF90aGlzMi5jb2xvciA9IGByZWRgO1xuXG4gICAgICAgIF90aGlzMi5maXJlKCk7XG5cbiAgICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHggPSBfdGhpczIudmFsdWU7XG4gICAgICBfdGhpczIudmFsdWUgPSB4ICE9PSBgYCA/IHggOiBfdGhpczIuaW5pdGlhbDtcbiAgICAgIF90aGlzMi5kb25lID0gdHJ1ZTtcbiAgICAgIF90aGlzMi5hYm9ydGVkID0gZmFsc2U7XG4gICAgICBfdGhpczIuZXJyb3IgPSBmYWxzZTtcblxuICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICBfdGhpczIub3V0LndyaXRlKGBcXG5gKTtcblxuICAgICAgX3RoaXMyLmNsb3NlKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMudHlwZWQgPSBgYDtcblxuICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluIC0gdGhpcy5pbmM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgPj0gdGhpcy5tYXgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlICs9IHRoaXMuaW5jO1xuICAgIHRoaXMuY29sb3IgPSBgY3lhbmA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9IGBgO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW4gKyB0aGlzLmluYztcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA8PSB0aGlzLm1pbikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgLT0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGxldCB2YWwgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZSh2YWwgPSB2YWwuc2xpY2UoMCwgLTEpKSB8fCBgYDtcblxuICAgIGlmICh0aGlzLnZhbHVlICE9PSAnJyAmJiB0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWw7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkKGMpKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0SGl0ID4gMTAwMCkgdGhpcy50eXBlZCA9IGBgOyAvLyAxcyBlbGFwc2VkXG5cbiAgICB0aGlzLnR5cGVkICs9IGM7XG4gICAgdGhpcy5sYXN0SGl0ID0gbm93O1xuICAgIHRoaXMuY29sb3IgPSBgY3lhbmA7XG4gICAgaWYgKGMgPT09IGAuYCkgcmV0dXJuIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMudmFsdWUgPSBNYXRoLm1pbih0aGlzLnBhcnNlKHRoaXMudHlwZWQpLCB0aGlzLm1heCk7XG4gICAgaWYgKHRoaXMudmFsdWUgPiB0aGlzLm1heCkgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgIGlmICh0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0UmVuZGVyKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXRFcnJvcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmRvd24obGluZXModGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykgLSAxKSArIGNsZWFyKHRoaXMub3V0cHV0RXJyb3IsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0RXJyb3IgPSAnJzsgLy8gUHJpbnQgcHJvbXB0XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLCAhdGhpcy5kb25lIHx8ICF0aGlzLmRvbmUgJiYgIXRoaXMucGxhY2Vob2xkZXIgPyBjb2xvclt0aGlzLmNvbG9yXSgpLnVuZGVybGluZSh0aGlzLnJlbmRlcmVkKSA6IHRoaXMucmVuZGVyZWRdLmpvaW4oYCBgKTsgLy8gUHJpbnQgZXJyb3JcblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLm91dHB1dEVycm9yICs9IHRoaXMuZXJyb3JNc2cuc3BsaXQoYFxcbmApLnJlZHVjZSgoYSwgbCwgaSkgPT4gYSArIGBcXG4ke2kgPyBgIGAgOiBmaWd1cmVzLnBvaW50ZXJTbWFsbH0gJHtjb2xvci5yZWQoKS5pdGFsaWMobCl9YCwgYGApO1xuICAgIH1cblxuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQgKyBjdXJzb3Iuc2F2ZSArIHRoaXMub3V0cHV0RXJyb3IgKyBjdXJzb3IucmVzdG9yZSk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlclByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBjdXJzb3IgPSBfcmVxdWlyZS5jdXJzb3I7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUyLmNsZWFyLFxuICAgICAgZmlndXJlcyA9IF9yZXF1aXJlMi5maWd1cmVzLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICB3cmFwID0gX3JlcXVpcmUyLndyYXAsXG4gICAgICBlbnRyaWVzVG9EaXNwbGF5ID0gX3JlcXVpcmUyLmVudHJpZXNUb0Rpc3BsYXk7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5cbmNsYXNzIE11bHRpc2VsZWN0UHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgLSc7XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IG9wdHMubWluO1xuICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5tYXhDaG9pY2VzID0gb3B0cy5tYXg7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBvcHRzLmluc3RydWN0aW9ucztcbiAgICB0aGlzLm9wdGlvbnNQZXJQYWdlID0gb3B0cy5vcHRpb25zUGVyUGFnZSB8fCAxMDtcbiAgICB0aGlzLnZhbHVlID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpIGNoID0ge1xuICAgICAgICB0aXRsZTogY2gsXG4gICAgICAgIHZhbHVlOiBpZHhcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGNoICYmIGNoLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG5cbiAgICBpZiAoIW9wdHMub3ZlcnJpZGVSZW5kZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZS5tYXAodiA9PiAhdi5zZWxlY3RlZCk7XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmZpbHRlcihlID0+IGUuc2VsZWN0ZWQpO1xuXG4gICAgaWYgKHRoaXMubWluU2VsZWN0ZWQgJiYgc2VsZWN0ZWQubGVuZ3RoIDwgdGhpcy5taW5TZWxlY3RlZCkge1xuICAgICAgdGhpcy5zaG93TWluRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLmN1cnNvciA9ICh0aGlzLmN1cnNvciArIDEpICUgdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkge1xuICAgICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yLS07XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBoYW5kbGVTcGFjZVRvZ2dsZSgpIHtcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl07XG5cbiAgICBpZiAodi5zZWxlY3RlZCkge1xuICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2UgaWYgKHYuZGlzYWJsZWQgfHwgdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVBbGwoKSB7XG4gICAgaWYgKHRoaXMubWF4Q2hvaWNlcyAhPT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U2VsZWN0ZWQgPSAhdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQ7XG4gICAgdGhpcy52YWx1ZS5maWx0ZXIodiA9PiAhdi5kaXNhYmxlZCkuZm9yRWFjaCh2ID0+IHYuc2VsZWN0ZWQgPSBuZXdTZWxlY3RlZCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy5oYW5kbGVTcGFjZVRvZ2dsZSgpO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJ2EnKSB7XG4gICAgICB0aGlzLnRvZ2dsZUFsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmluc3RydWN0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdHJ1Y3Rpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnXFxuSW5zdHJ1Y3Rpb25zOlxcbicgKyBgICAgICR7ZmlndXJlcy5hcnJvd1VwfS8ke2ZpZ3VyZXMuYXJyb3dEb3dufTogSGlnaGxpZ2h0IG9wdGlvblxcbmAgKyBgICAgICR7ZmlndXJlcy5hcnJvd0xlZnR9LyR7ZmlndXJlcy5hcnJvd1JpZ2h0fS9bc3BhY2VdOiBUb2dnbGUgc2VsZWN0aW9uXFxuYCArICh0aGlzLm1heENob2ljZXMgPT09IHVuZGVmaW5lZCA/IGAgICAgYTogVG9nZ2xlIGFsbFxcbmAgOiAnJykgKyBgICAgIGVudGVyL3JldHVybjogQ29tcGxldGUgYW5zd2VyYDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJPcHRpb24oY3Vyc29yLCB2LCBpLCBhcnJvd0luZGljYXRvcikge1xuICAgIGNvbnN0IHByZWZpeCA9ICh2LnNlbGVjdGVkID8gY29sb3IuZ3JlZW4oZmlndXJlcy5yYWRpb09uKSA6IGZpZ3VyZXMucmFkaW9PZmYpICsgJyAnICsgYXJyb3dJbmRpY2F0b3IgKyAnICc7XG4gICAgbGV0IHRpdGxlLCBkZXNjO1xuXG4gICAgaWYgKHYuZGlzYWJsZWQpIHtcbiAgICAgIHRpdGxlID0gY3Vyc29yID09PSBpID8gY29sb3IuZ3JheSgpLnVuZGVybGluZSh2LnRpdGxlKSA6IGNvbG9yLnN0cmlrZXRocm91Z2goKS5ncmF5KHYudGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuXG4gICAgICBpZiAoY3Vyc29yID09PSBpICYmIHYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgZGVzYyA9IGAgLSAke3YuZGVzY3JpcHRpb259YDtcblxuICAgICAgICBpZiAocHJlZml4Lmxlbmd0aCArIHRpdGxlLmxlbmd0aCArIGRlc2MubGVuZ3RoID49IHRoaXMub3V0LmNvbHVtbnMgfHwgdi5kZXNjcmlwdGlvbi5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBkZXNjID0gJ1xcbicgKyB3cmFwKHYuZGVzY3JpcHRpb24sIHtcbiAgICAgICAgICAgIG1hcmdpbjogcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ICsgdGl0bGUgKyBjb2xvci5ncmF5KGRlc2MgfHwgJycpO1xuICB9IC8vIHNoYXJlZCB3aXRoIGF1dG9jb21wbGV0ZU11bHRpc2VsZWN0XG5cblxuICBwYWdpbmF0ZU9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNvbG9yLnJlZCgnTm8gbWF0Y2hlcyBmb3IgdGhpcyBxdWVyeS4nKTtcbiAgICB9XG5cbiAgICBsZXQgX2VudHJpZXNUb0Rpc3BsYXkgPSBlbnRyaWVzVG9EaXNwbGF5KHRoaXMuY3Vyc29yLCBvcHRpb25zLmxlbmd0aCwgdGhpcy5vcHRpb25zUGVyUGFnZSksXG4gICAgICAgIHN0YXJ0SW5kZXggPSBfZW50cmllc1RvRGlzcGxheS5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IF9lbnRyaWVzVG9EaXNwbGF5LmVuZEluZGV4O1xuXG4gICAgbGV0IHByZWZpeCxcbiAgICAgICAgc3R5bGVkT3B0aW9ucyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgaSsrKSB7XG4gICAgICBpZiAoaSA9PT0gc3RhcnRJbmRleCAmJiBzdGFydEluZGV4ID4gMCkge1xuICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93VXA7XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHByZWZpeCA9IGZpZ3VyZXMuYXJyb3dEb3duO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZml4ID0gJyAnO1xuICAgICAgfVxuXG4gICAgICBzdHlsZWRPcHRpb25zLnB1c2godGhpcy5yZW5kZXJPcHRpb24odGhpcy5jdXJzb3IsIG9wdGlvbnNbaV0sIGksIHByZWZpeCkpO1xuICAgIH1cblxuICAgIHJldHVybiAnXFxuJyArIHN0eWxlZE9wdGlvbnMuam9pbignXFxuJyk7XG4gIH0gLy8gc2hhcmVkIHdpdGggYXV0b2NvbWxldGVNdWx0aXNlbGVjdFxuXG5cbiAgcmVuZGVyT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLmRvbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJEb25lT3JJbnN0cnVjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubWFwKHYgPT4gdi50aXRsZSkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXQgPSBbY29sb3IuZ3JheSh0aGlzLmhpbnQpLCB0aGlzLnJlbmRlckluc3RydWN0aW9ucygpXTtcblxuICAgIGlmICh0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgb3V0cHV0LnB1c2goY29sb3IueWVsbG93KHRoaXMud2FybikpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQuam9pbignICcpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7XG4gICAgc3VwZXIucmVuZGVyKCk7IC8vIHByaW50IHByb21wdFxuXG4gICAgbGV0IHByb21wdCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSwgdGhpcy5yZW5kZXJEb25lT3JJbnN0cnVjdGlvbnMoKV0uam9pbignICcpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01pbkVycm9yKSB7XG4gICAgICBwcm9tcHQgKz0gY29sb3IucmVkKGBZb3UgbXVzdCBzZWxlY3QgYSBtaW5pbXVtIG9mICR7dGhpcy5taW5TZWxlY3RlZH0gY2hvaWNlcy5gKTtcbiAgICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvbXB0ICs9IHRoaXMucmVuZGVyT3B0aW9ucyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm91dC53cml0ZSh0aGlzLmNsZWFyICsgcHJvbXB0KTtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIocHJvbXB0LCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gTXVsdGlzZWxlY3RQcm9tcHQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlMi5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZTIuZmlndXJlcyxcbiAgICAgIHdyYXAgPSBfcmVxdWlyZTIud3JhcCxcbiAgICAgIGVudHJpZXNUb0Rpc3BsYXkgPSBfcmVxdWlyZTIuZW50cmllc1RvRGlzcGxheTtcblxuY29uc3QgZ2V0VmFsID0gKGFyciwgaSkgPT4gYXJyW2ldICYmIChhcnJbaV0udmFsdWUgfHwgYXJyW2ldLnRpdGxlIHx8IGFycltpXSk7XG5cbmNvbnN0IGdldFRpdGxlID0gKGFyciwgaSkgPT4gYXJyW2ldICYmIChhcnJbaV0udGl0bGUgfHwgYXJyW2ldLnZhbHVlIHx8IGFycltpXSk7XG5cbmNvbnN0IGdldEluZGV4ID0gKGFyciwgdmFsT3JUaXRsZSkgPT4ge1xuICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoZWwgPT4gZWwudmFsdWUgPT09IHZhbE9yVGl0bGUgfHwgZWwudGl0bGUgPT09IHZhbE9yVGl0bGUpO1xuICByZXR1cm4gaW5kZXggPiAtMSA/IGluZGV4IDogdW5kZWZpbmVkO1xufTtcbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtBcnJheX0gb3B0cy5jaG9pY2VzIEFycmF5IG9mIGF1dG8tY29tcGxldGUgY2hvaWNlcyBvYmplY3RzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5zdWdnZXN0XSBGaWx0ZXIgZnVuY3Rpb24uIERlZmF1bHRzIHRvIHNvcnQgYnkgdGl0bGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5saW1pdD0xMF0gTWF4IG51bWJlciBvZiByZXN1bHRzIHRvIHNob3dcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5jdXJzb3I9MF0gQ3Vyc29yIHN0YXJ0IHBvc2l0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc3R5bGU9J2RlZmF1bHQnXSBSZW5kZXIgc3R5bGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5mYWxsYmFja10gRmFsbGJhY2sgbWVzc2FnZSAtIGluaXRpYWwgdG8gZGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmNsZWFyRmlyc3RdIFRoZSBmaXJzdCBFU0NBUEUga2V5cHJlc3Mgd2lsbCBjbGVhciB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5vTWF0Y2hlc10gVGhlIG5vIG1hdGNoZXMgZm91bmQgbGFiZWxcbiAqL1xuXG5cbmNsYXNzIEF1dG9jb21wbGV0ZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuc3VnZ2VzdCA9IG9wdHMuc3VnZ2VzdDtcbiAgICB0aGlzLmNob2ljZXMgPSBvcHRzLmNob2ljZXM7XG4gICAgdGhpcy5pbml0aWFsID0gdHlwZW9mIG9wdHMuaW5pdGlhbCA9PT0gJ251bWJlcicgPyBvcHRzLmluaXRpYWwgOiBnZXRJbmRleChvcHRzLmNob2ljZXMsIG9wdHMuaW5pdGlhbCk7XG4gICAgdGhpcy5zZWxlY3QgPSB0aGlzLmluaXRpYWwgfHwgb3B0cy5jdXJzb3IgfHwgMDtcbiAgICB0aGlzLmkxOG4gPSB7XG4gICAgICBub01hdGNoZXM6IG9wdHMubm9NYXRjaGVzIHx8ICdubyBtYXRjaGVzIGZvdW5kJ1xuICAgIH07XG4gICAgdGhpcy5mYWxsYmFjayA9IG9wdHMuZmFsbGJhY2sgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuY2xlYXJGaXJzdCA9IG9wdHMuY2xlYXJGaXJzdCB8fCBmYWxzZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgIHRoaXMubGltaXQgPSBvcHRzLmxpbWl0IHx8IDEwO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5yZW5kZXIgPSB0aGlzLnJlbmRlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY29tcGxldGUgPSB0aGlzLmNvbXBsZXRlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IGZhbGxiYWNrKGZiKSB7XG4gICAgdGhpcy5fZmIgPSBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYXJzZUludChmYikpID8gcGFyc2VJbnQoZmIpIDogZmI7XG4gIH1cblxuICBnZXQgZmFsbGJhY2soKSB7XG4gICAgbGV0IGNob2ljZTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ZiID09PSAnbnVtYmVyJykgY2hvaWNlID0gdGhpcy5jaG9pY2VzW3RoaXMuX2ZiXTtlbHNlIGlmICh0eXBlb2YgdGhpcy5fZmIgPT09ICdzdHJpbmcnKSBjaG9pY2UgPSB7XG4gICAgICB0aXRsZTogdGhpcy5fZmJcbiAgICB9O1xuICAgIHJldHVybiBjaG9pY2UgfHwgdGhpcy5fZmIgfHwge1xuICAgICAgdGl0bGU6IHRoaXMuaTE4bi5ub01hdGNoZXNcbiAgICB9O1xuICB9XG5cbiAgbW92ZVNlbGVjdChpKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBpO1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHRoaXMudmFsdWUgPSBnZXRWYWwodGhpcy5zdWdnZXN0aW9ucywgaSk7ZWxzZSB0aGlzLnZhbHVlID0gdGhpcy5mYWxsYmFjay52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIGNvbXBsZXRlKGNiKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgcCA9IF90aGlzLmNvbXBsZXRpbmcgPSBfdGhpcy5zdWdnZXN0KF90aGlzLmlucHV0LCBfdGhpcy5jaG9pY2VzKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB5aWVsZCBwO1xuICAgICAgaWYgKF90aGlzLmNvbXBsZXRpbmcgIT09IHApIHJldHVybjtcbiAgICAgIF90aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMubWFwKChzLCBpLCBhcnIpID0+ICh7XG4gICAgICAgIHRpdGxlOiBnZXRUaXRsZShhcnIsIGkpLFxuICAgICAgICB2YWx1ZTogZ2V0VmFsKGFyciwgaSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzLmRlc2NyaXB0aW9uXG4gICAgICB9KSk7XG4gICAgICBfdGhpcy5jb21wbGV0aW5nID0gZmFsc2U7XG4gICAgICBjb25zdCBsID0gTWF0aC5tYXgoc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSwgMCk7XG5cbiAgICAgIF90aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4obCwgX3RoaXMuc2VsZWN0KSk7XG5cbiAgICAgIGNiICYmIGNiKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICB0aGlzLmNvbXBsZXRlKCgpID0+IHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLmluaXRpYWwgIT09IHZvaWQgMCA/IHRoaXMuaW5pdGlhbCA6IDApO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICBpZiAodGhpcy5jbGVhckZpcnN0ICYmIHRoaXMuaW5wdXQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvbmUgPSB0aGlzLmV4aXRlZCA9IHRydWU7XG4gICAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlyZSgpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZXhpdGVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgdGhpcy5hYm9ydGVkID0gdGhpcy5leGl0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMuaW5wdXQuc2xpY2UodGhpcy5jdXJzb3IpO1xuICAgIHRoaXMuaW5wdXQgPSBgJHtzMX0ke2N9JHtzMn1gO1xuICAgIHRoaXMuY3Vyc29yID0gczEubGVuZ3RoICsgMTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IgLSAxKTtcbiAgICBsZXQgczIgPSB0aGlzLmlucHV0LnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLmlucHV0ID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMuY29tcGxldGUodGhpcy5yZW5kZXIpO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IgLSAxO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkZWxldGVGb3J3YXJkKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciAqIHRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICBsZXQgczEgPSB0aGlzLmlucHV0LnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLmlucHV0LnNsaWNlKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZmlyc3QoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgLSAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgKyAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIH0gZWxzZSB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgKyAxKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4odGhpcy5zZWxlY3QgKyB0aGlzLmxpbWl0LCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KE1hdGgubWF4KHRoaXMuc2VsZWN0IC0gdGhpcy5saW1pdCwgMCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLmN1cnNvciAtIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciAqIHRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMuY3Vyc29yICsgMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKHYsIGhvdmVyZWQsIGlzU3RhcnQsIGlzRW5kKSB7XG4gICAgbGV0IGRlc2M7XG4gICAgbGV0IHByZWZpeCA9IGlzU3RhcnQgPyBmaWd1cmVzLmFycm93VXAgOiBpc0VuZCA/IGZpZ3VyZXMuYXJyb3dEb3duIDogJyAnO1xuICAgIGxldCB0aXRsZSA9IGhvdmVyZWQgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICBwcmVmaXggPSAoaG92ZXJlZCA/IGNvbG9yLmN5YW4oZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuXG4gICAgaWYgKHYuZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2MgPSBgIC0gJHt2LmRlc2NyaXB0aW9ufWA7XG5cbiAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1ucyB8fCB2LmRlc2NyaXB0aW9uLnNwbGl0KC9cXHI/XFxuLykubGVuZ3RoID4gMSkge1xuICAgICAgICBkZXNjID0gJ1xcbicgKyB3cmFwKHYuZGVzY3JpcHRpb24sIHtcbiAgICAgICAgICBtYXJnaW46IDMsXG4gICAgICAgICAgd2lkdGg6IHRoaXMub3V0LmNvbHVtbnNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWZpeCArICcgJyArIHRpdGxlICsgY29sb3IuZ3JheShkZXNjIHx8ICcnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO2Vsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICBsZXQgX2VudHJpZXNUb0Rpc3BsYXkgPSBlbnRyaWVzVG9EaXNwbGF5KHRoaXMuc2VsZWN0LCB0aGlzLmNob2ljZXMubGVuZ3RoLCB0aGlzLmxpbWl0KSxcbiAgICAgICAgc3RhcnRJbmRleCA9IF9lbnRyaWVzVG9EaXNwbGF5LnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gX2VudHJpZXNUb0Rpc3BsYXkuZW5kSW5kZXg7XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkLCB0aGlzLmV4aXRlZCksIGNvbG9yLmJvbGQodGhpcy5tc2cpLCBzdHlsZS5kZWxpbWl0ZXIodGhpcy5jb21wbGV0aW5nKSwgdGhpcy5kb25lICYmIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zZWxlY3RdID8gdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdF0udGl0bGUgOiB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5wdXQpXS5qb2luKCcgJyk7XG5cbiAgICBpZiAoIXRoaXMuZG9uZSkge1xuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLnN1Z2dlc3Rpb25zLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KS5tYXAoKGl0ZW0sIGkpID0+IHRoaXMucmVuZGVyT3B0aW9uKGl0ZW0sIHRoaXMuc2VsZWN0ID09PSBpICsgc3RhcnRJbmRleCwgaSA9PT0gMCAmJiBzdGFydEluZGV4ID4gMCwgaSArIHN0YXJ0SW5kZXggPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpKS5qb2luKCdcXG4nKTtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgXFxuYCArIChzdWdnZXN0aW9ucyB8fCBjb2xvci5ncmF5KHRoaXMuZmFsbGJhY2sudGl0bGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b2NvbXBsZXRlUHJvbXB0OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3QgTXVsdGlzZWxlY3RQcm9tcHQgPSByZXF1aXJlKCcuL211bHRpc2VsZWN0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUyLmNsZWFyLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBmaWd1cmVzID0gX3JlcXVpcmUyLmZpZ3VyZXM7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICovXG5cblxuY2xhc3MgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQgZXh0ZW5kcyBNdWx0aXNlbGVjdFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIG9wdHMub3ZlcnJpZGVSZW5kZXIgPSB0cnVlO1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLmN1cnNvciA9ICh0aGlzLmN1cnNvciArIDEpICUgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3ItLTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cigwLCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpIHtcbiAgICBjb25zdCBjdXJyZW50SGlnaGxpZ2h0ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy52YWx1ZS5maWx0ZXIodiA9PiB7XG4gICAgICBpZiAodGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygdi50aXRsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAodi50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmICh2LnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmluZEluZGV4KHYgPT4gdiA9PT0gY3VycmVudEhpZ2hsaWdodCk7XG4gICAgdGhpcy5jdXJzb3IgPSBuZXdIaWdobGlnaHRJbmRleCA8IDAgPyAwIDogbmV3SGlnaGxpZ2h0SW5kZXg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGhhbmRsZVNwYWNlVG9nZ2xlKCkge1xuICAgIGNvbnN0IHYgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl07XG5cbiAgICBpZiAodi5zZWxlY3RlZCkge1xuICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2UgaWYgKHYuZGlzYWJsZWQgfHwgdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbnB1dENoYW5nZShjKSB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlICsgYztcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSB7XG4gICAgICB0aGlzLmhhbmRsZVNwYWNlVG9nZ2xlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoYyk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmluc3RydWN0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdHJ1Y3Rpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgXG5JbnN0cnVjdGlvbnM6XG4gICAgJHtmaWd1cmVzLmFycm93VXB9LyR7ZmlndXJlcy5hcnJvd0Rvd259OiBIaWdobGlnaHQgb3B0aW9uXG4gICAgJHtmaWd1cmVzLmFycm93TGVmdH0vJHtmaWd1cmVzLmFycm93UmlnaHR9L1tzcGFjZV06IFRvZ2dsZSBzZWxlY3Rpb25cbiAgICBbYSxiLGNdL2RlbGV0ZTogRmlsdGVyIGNob2ljZXNcbiAgICBlbnRlci9yZXR1cm46IENvbXBsZXRlIGFuc3dlclxuYDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJDdXJyZW50SW5wdXQoKSB7XG4gICAgcmV0dXJuIGBcbkZpbHRlcmVkIHJlc3VsdHMgZm9yOiAke3RoaXMuaW5wdXRWYWx1ZSA/IHRoaXMuaW5wdXRWYWx1ZSA6IGNvbG9yLmdyYXkoJ0VudGVyIHNvbWV0aGluZyB0byBmaWx0ZXInKX1cXG5gO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKGN1cnNvciwgdiwgaSkge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAodi5kaXNhYmxlZCkgdGl0bGUgPSBjdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7ZWxzZSB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgIHJldHVybiAodi5zZWxlY3RlZCA/IGNvbG9yLmdyZWVuKGZpZ3VyZXMucmFkaW9PbikgOiBmaWd1cmVzLnJhZGlvT2ZmKSArICcgICcgKyB0aXRsZTtcbiAgfVxuXG4gIHJlbmRlckRvbmVPckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5tYXAodiA9PiB2LnRpdGxlKS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IFtjb2xvci5ncmF5KHRoaXMuaGludCksIHRoaXMucmVuZGVySW5zdHJ1Y3Rpb25zKCksIHRoaXMucmVuZGVyQ3VycmVudElucHV0KCldO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uZGlzYWJsZWQpIHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbG9yLnllbGxvdyh0aGlzLndhcm4pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIHN1cGVyLnJlbmRlcigpOyAvLyBwcmludCBwcm9tcHRcblxuICAgIGxldCBwcm9tcHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcihmYWxzZSksIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKCldLmpvaW4oJyAnKTtcblxuICAgIGlmICh0aGlzLnNob3dNaW5FcnJvcikge1xuICAgICAgcHJvbXB0ICs9IGNvbG9yLnJlZChgWW91IG11c3Qgc2VsZWN0IGEgbWluaW11bSBvZiAke3RoaXMubWluU2VsZWN0ZWR9IGNob2ljZXMuYCk7XG4gICAgICB0aGlzLnNob3dNaW5FcnJvciA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb21wdCArPSB0aGlzLnJlbmRlck9wdGlvbnModGhpcy5maWx0ZXJlZE9wdGlvbnMpO1xuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIHN0eWxlID0gX3JlcXVpcmUuc3R5bGUsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlLmNsZWFyO1xuXG5jb25zdCBfcmVxdWlyZTIgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3I7XG4vKipcbiAqIENvbmZpcm1Qcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZSAodHJ1ZS9mYWxzZSlcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnllc10gVGhlIFwiWWVzXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy55ZXNPcHRpb25dIFRoZSBcIlllc1wiIG9wdGlvbiB3aGVuIGNob29zaW5nIGJldHdlZW4geWVzL25vXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9dIFRoZSBcIk5vXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ub09wdGlvbl0gVGhlIFwiTm9cIiBvcHRpb24gd2hlbiBjaG9vc2luZyBiZXR3ZWVuIHllcy9ub1xuICovXG5cblxuY2xhc3MgQ29uZmlybVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSBvcHRzLmluaXRpYWw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLnllc01zZyA9IG9wdHMueWVzIHx8ICd5ZXMnO1xuICAgIHRoaXMueWVzT3B0aW9uID0gb3B0cy55ZXNPcHRpb24gfHwgJyhZL24pJztcbiAgICB0aGlzLm5vTXNnID0gb3B0cy5ubyB8fCAnbm8nO1xuICAgIHRoaXMubm9PcHRpb24gPSBvcHRzLm5vT3B0aW9uIHx8ICcoeS9OKSc7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIGlmIChjLnRvTG93ZXJDYXNlKCkgPT09ICduJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRoaXMuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTtcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLCB0aGlzLmRvbmUgPyB0aGlzLnZhbHVlID8gdGhpcy55ZXNNc2cgOiB0aGlzLm5vTXNnIDogY29sb3IuZ3JheSh0aGlzLmluaXRpYWxWYWx1ZSA/IHRoaXMueWVzT3B0aW9uIDogdGhpcy5ub09wdGlvbildLmpvaW4oJyAnKTtcbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29uZmlybVByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0UHJvbXB0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgU2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL3NlbGVjdCcpLFxuICBUb2dnbGVQcm9tcHQ6IHJlcXVpcmUoJy4vdG9nZ2xlJyksXG4gIERhdGVQcm9tcHQ6IHJlcXVpcmUoJy4vZGF0ZScpLFxuICBOdW1iZXJQcm9tcHQ6IHJlcXVpcmUoJy4vbnVtYmVyJyksXG4gIE11bHRpc2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL211bHRpc2VsZWN0JyksXG4gIEF1dG9jb21wbGV0ZVByb21wdDogcmVxdWlyZSgnLi9hdXRvY29tcGxldGUnKSxcbiAgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ6IHJlcXVpcmUoJy4vYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QnKSxcbiAgQ29uZmlybVByb21wdDogcmVxdWlyZSgnLi9jb25maXJtJylcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCAkID0gZXhwb3J0cztcblxuY29uc3QgZWwgPSByZXF1aXJlKCcuL2VsZW1lbnRzJyk7XG5cbmNvbnN0IG5vb3AgPSB2ID0+IHY7XG5cbmZ1bmN0aW9uIHRvUHJvbXB0KHR5cGUsIGFyZ3MsIG9wdHMgPSB7fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3QgcCA9IG5ldyBlbFt0eXBlXShhcmdzKTtcbiAgICBjb25zdCBvbkFib3J0ID0gb3B0cy5vbkFib3J0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25TdWJtaXQgPSBvcHRzLm9uU3VibWl0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25FeGl0ID0gb3B0cy5vbkV4aXQgfHwgbm9vcDtcbiAgICBwLm9uKCdzdGF0ZScsIGFyZ3Mub25TdGF0ZSB8fCBub29wKTtcbiAgICBwLm9uKCdzdWJtaXQnLCB4ID0+IHJlcyhvblN1Ym1pdCh4KSkpO1xuICAgIHAub24oJ2V4aXQnLCB4ID0+IHJlcyhvbkV4aXQoeCkpKTtcbiAgICBwLm9uKCdhYm9ydCcsIHggPT4gcmVqKG9uQWJvcnQoeCkpKTtcbiAgfSk7XG59XG4vKipcbiAqIFRleHQgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbml0aWFsXSBEZWZhdWx0IHN0cmluZyB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC50ZXh0ID0gYXJncyA9PiB0b1Byb21wdCgnVGV4dFByb21wdCcsIGFyZ3MpO1xuLyoqXG4gKiBQYXNzd29yZCBwcm9tcHQgd2l0aCBtYXNrZWQgaW5wdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC5wYXNzd29yZCA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ3Bhc3N3b3JkJztcbiAgcmV0dXJuICQudGV4dChhcmdzKTtcbn07XG4vKipcbiAqIFByb21wdCB3aGVyZSBpbnB1dCBpcyBpbnZpc2libGUsIGxpa2Ugc3Vkb1xuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaW5pdGlhbF0gRGVmYXVsdCBzdHJpbmcgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLmludmlzaWJsZSA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ2ludmlzaWJsZSc7XG4gIHJldHVybiAkLnRleHQoYXJncyk7XG59O1xuLyoqXG4gKiBOdW1iZXIgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmluaXRpYWwgRGVmYXVsdCBudW1iZXIgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heF0gTWF4IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWluXSBNaW4gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5mbG9hdD1mYWxzZV0gUGFyc2UgaW5wdXQgYXMgZmxvYXRzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMucm91bmQ9Ml0gUm91bmQgZmxvYXRzIHRvIHggZGVjaW1hbHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbmNyZW1lbnQ9MV0gTnVtYmVyIHRvIGluY3JlbWVudCBieSB3aGVuIHVzaW5nIGFycm93LWtleXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC5udW1iZXIgPSBhcmdzID0+IHRvUHJvbXB0KCdOdW1iZXJQcm9tcHQnLCBhcmdzKTtcbi8qKlxuICogRGF0ZSBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLmRhdGUgPSBhcmdzID0+IHRvUHJvbXB0KCdEYXRlUHJvbXB0JywgYXJncyk7XG4vKipcbiAqIENsYXNzaWMgeWVzL25vIHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuY29uZmlybSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0NvbmZpcm1Qcm9tcHQnLCBhcmdzKTtcbi8qKlxuICogTGlzdCBwcm9tcHQsIHNwbGl0IGludHB1dCBzdHJpbmcgYnkgYHNlcGVyYXRvcmBcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zZXBhcmF0b3JdIFN0cmluZyBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXQsIGluIGZvcm0gb2YgYW4gYEFycmF5YFxuICovXG5cblxuJC5saXN0ID0gYXJncyA9PiB7XG4gIGNvbnN0IHNlcCA9IGFyZ3Muc2VwYXJhdG9yIHx8ICcsJztcbiAgcmV0dXJuIHRvUHJvbXB0KCdUZXh0UHJvbXB0JywgYXJncywge1xuICAgIG9uU3VibWl0OiBzdHIgPT4gc3RyLnNwbGl0KHNlcCkubWFwKHMgPT4gcy50cmltKCkpXG4gIH0pO1xufTtcbi8qKlxuICogVG9nZ2xlL3N3aXRjaCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuYWN0aXZlPVwib25cIl0gVGV4dCBmb3IgYGFjdGl2ZWAgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbmFjdGl2ZT1cIm9mZlwiXSBUZXh0IGZvciBgaW5hY3RpdmVgIHN0YXRlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLnRvZ2dsZSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ1RvZ2dsZVByb21wdCcsIGFyZ3MpO1xuLyoqXG4gKiBJbnRlcmFjdGl2ZSBzZWxlY3QgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSB9LCAuLi5dYFxuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuc2VsZWN0ID0gYXJncyA9PiB0b1Byb21wdCgnU2VsZWN0UHJvbXB0JywgYXJncyk7XG4vKipcbiAqIEludGVyYWN0aXZlIG11bHRpLXNlbGVjdCAvIGF1dG9jb21wbGV0ZU11bHRpc2VsZWN0IHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlcyBvYmplY3RzIGBbeyB0aXRsZSwgdmFsdWUsIFtzZWxlY3RlZF0gfSwgLi4uXWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5tYXhdIE1heCBzZWxlY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5oaW50XSBIaW50IHRvIGRpc3BsYXkgdXNlclxuICogQHBhcmFtIHtOdW1iZXJ9IFthcmdzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQubXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG5cbiAgY29uc3QgdG9TZWxlY3RlZCA9IGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuXG4gIHJldHVybiB0b1Byb21wdCgnTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbiQuYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG5cbiAgY29uc3QgdG9TZWxlY3RlZCA9IGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuXG4gIHJldHVybiB0b1Byb21wdCgnQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbmNvbnN0IGJ5VGl0bGUgPSAoaW5wdXQsIGNob2ljZXMpID0+IFByb21pc2UucmVzb2x2ZShjaG9pY2VzLmZpbHRlcihpdGVtID0+IGl0ZW0udGl0bGUuc2xpY2UoMCwgaW5wdXQubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpKSk7XG4vKipcbiAqIEludGVyYWN0aXZlIGF1dG8tY29tcGxldGUgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBhdXRvLWNvbXBsZXRlIGNob2ljZXMgb2JqZWN0cyBgW3sgdGl0bGUsIHZhbHVlIH0sIC4uLl1gXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbYXJncy5zdWdnZXN0XSBGdW5jdGlvbiB0byBmaWx0ZXIgcmVzdWx0cyBiYXNlZCBvbiB1c2VyIGlucHV0LiBEZWZhdWx0cyB0byBzb3J0IGJ5IGB0aXRsZWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5saW1pdD0xMF0gTWF4IG51bWJlciBvZiByZXN1bHRzIHRvIHNob3dcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtTdHJpbmd9IFthcmdzLmluaXRpYWxdIEluZGV4IG9mIHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmNsZWFyRmlyc3RdIFRoZSBmaXJzdCBFU0NBUEUga2V5cHJlc3Mgd2lsbCBjbGVhciB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5mYWxsYmFja10gRmFsbGJhY2sgbWVzc2FnZSAtIGRlZmF1bHRzIHRvIGluaXRpYWwgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuYXV0b2NvbXBsZXRlID0gYXJncyA9PiB7XG4gIGFyZ3Muc3VnZ2VzdCA9IGFyZ3Muc3VnZ2VzdCB8fCBieVRpdGxlO1xuICBhcmdzLmNob2ljZXMgPSBbXS5jb25jYXQoYXJncy5jaG9pY2VzIHx8IFtdKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVQcm9tcHQnLCBhcmdzKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdCA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bXCJAQGl0ZXJhdG9yXCJdOyBpZiAoIWl0KSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IGl0LmNhbGwobyk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBwcm9tcHRzID0gcmVxdWlyZSgnLi9wcm9tcHRzJyk7XG5cbmNvbnN0IHBhc3NPbiA9IFsnc3VnZ2VzdCcsICdmb3JtYXQnLCAnb25TdGF0ZScsICd2YWxpZGF0ZScsICdvblJlbmRlcicsICd0eXBlJ107XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbi8qKlxuICogUHJvbXB0IGZvciBhIHNlcmllcyBvZiBxdWVzdGlvbnNcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBxdWVzdGlvbnMgU2luZ2xlIHF1ZXN0aW9uIG9iamVjdCBvciBBcnJheSBvZiBxdWVzdGlvbiBvYmplY3RzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWJtaXRdIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBvbiBwcm9tcHQgc3VibWl0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25DYW5jZWxdIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBvbiBjYW5jZWwvYWJvcnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IE9iamVjdCB3aXRoIHZhbHVlcyBmcm9tIHVzZXIgaW5wdXRcbiAqL1xuXG5cbmZ1bmN0aW9uIHByb21wdCgpIHtcbiAgcmV0dXJuIF9wcm9tcHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX3Byb21wdCgpIHtcbiAgX3Byb21wdCA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAocXVlc3Rpb25zID0gW10sIHtcbiAgICBvblN1Ym1pdCA9IG5vb3AsXG4gICAgb25DYW5jZWwgPSBub29wXG4gIH0gPSB7fSkge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB7fTtcbiAgICBjb25zdCBvdmVycmlkZSA9IHByb21wdC5fb3ZlcnJpZGUgfHwge307XG4gICAgcXVlc3Rpb25zID0gW10uY29uY2F0KHF1ZXN0aW9ucyk7XG4gICAgbGV0IGFuc3dlciwgcXVlc3Rpb24sIHF1aXQsIG5hbWUsIHR5cGUsIGxhc3RQcm9tcHQ7XG5cbiAgICBjb25zdCBnZXRGb3JtYXR0ZWRBbnN3ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKHF1ZXN0aW9uLCBhbnN3ZXIsIHNraXBWYWxpZGF0aW9uID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFza2lwVmFsaWRhdGlvbiAmJiBxdWVzdGlvbi52YWxpZGF0ZSAmJiBxdWVzdGlvbi52YWxpZGF0ZShhbnN3ZXIpICE9PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXN0aW9uLmZvcm1hdCA/IHlpZWxkIHF1ZXN0aW9uLmZvcm1hdChhbnN3ZXIsIGFuc3dlcnMpIDogYW5zd2VyO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRBbnN3ZXIoX3gsIF94Mikge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIocXVlc3Rpb25zKSxcbiAgICAgICAgX3N0ZXA7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgcXVlc3Rpb24gPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgdmFyIF9xdWVzdGlvbiA9IHF1ZXN0aW9uO1xuICAgICAgICBuYW1lID0gX3F1ZXN0aW9uLm5hbWU7XG4gICAgICAgIHR5cGUgPSBfcXVlc3Rpb24udHlwZTtcblxuICAgICAgICAvLyBldmFsdWF0ZSB0eXBlIGZpcnN0IGFuZCBza2lwIGlmIHR5cGUgaXMgYSBmYWxzeSB2YWx1ZVxuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0eXBlID0geWllbGQgdHlwZShhbnN3ZXIsIF9vYmplY3RTcHJlYWQoe30sIGFuc3dlcnMpLCBxdWVzdGlvbik7XG4gICAgICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlOyAvLyBpZiBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgdW5sZXNzIGl0J3MgYSBzcGVjaWFsIGZ1bmN0aW9uXG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIHF1ZXN0aW9uKSB7XG4gICAgICAgICAgaWYgKHBhc3NPbi5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBxdWVzdGlvbltrZXldO1xuICAgICAgICAgIHF1ZXN0aW9uW2tleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB5aWVsZCB2YWx1ZShhbnN3ZXIsIF9vYmplY3RTcHJlYWQoe30sIGFuc3dlcnMpLCBsYXN0UHJvbXB0KSA6IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFzdFByb21wdCA9IHF1ZXN0aW9uO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcXVlc3Rpb24ubWVzc2FnZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb21wdCBtZXNzYWdlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH0gLy8gdXBkYXRlIHZhcnMgaW4gY2FzZSB0aGV5IGNoYW5nZWRcblxuXG4gICAgICAgIHZhciBfcXVlc3Rpb24yID0gcXVlc3Rpb247XG4gICAgICAgIG5hbWUgPSBfcXVlc3Rpb24yLm5hbWU7XG4gICAgICAgIHR5cGUgPSBfcXVlc3Rpb24yLnR5cGU7XG5cbiAgICAgICAgaWYgKHByb21wdHNbdHlwZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvbXB0IHR5cGUgKCR7dHlwZX0pIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFuc3dlciA9IHlpZWxkIGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgb3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0pO1xuXG4gICAgICAgICAgaWYgKGFuc3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbnN3ZXJzW25hbWVdID0gYW5zd2VyO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBHZXQgdGhlIGluamVjdGVkIGFuc3dlciBpZiB0aGVyZSBpcyBvbmUgb3IgcHJvbXB0IHRoZSB1c2VyXG4gICAgICAgICAgYW5zd2VyID0gcHJvbXB0Ll9pbmplY3RlZCA/IGdldEluamVjdGVkQW5zd2VyKHByb21wdC5faW5qZWN0ZWQsIHF1ZXN0aW9uLmluaXRpYWwpIDogeWllbGQgcHJvbXB0c1t0eXBlXShxdWVzdGlvbik7XG4gICAgICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlciA9IHlpZWxkIGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgYW5zd2VyLCB0cnVlKTtcbiAgICAgICAgICBxdWl0ID0geWllbGQgb25TdWJtaXQocXVlc3Rpb24sIGFuc3dlciwgYW5zd2Vycyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHF1aXQgPSAhKHlpZWxkIG9uQ2FuY2VsKHF1ZXN0aW9uLCBhbnN3ZXJzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVpdCkgcmV0dXJuIGFuc3dlcnM7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBfaXRlcmF0b3IuZigpO1xuICAgIH1cblxuICAgIHJldHVybiBhbnN3ZXJzO1xuICB9KTtcbiAgcmV0dXJuIF9wcm9tcHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5qZWN0ZWRBbnN3ZXIoaW5qZWN0ZWQsIGRlYWZ1bHRWYWx1ZSkge1xuICBjb25zdCBhbnN3ZXIgPSBpbmplY3RlZC5zaGlmdCgpO1xuXG4gIGlmIChhbnN3ZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHRocm93IGFuc3dlcjtcbiAgfVxuXG4gIHJldHVybiBhbnN3ZXIgPT09IHVuZGVmaW5lZCA/IGRlYWZ1bHRWYWx1ZSA6IGFuc3dlcjtcbn1cblxuZnVuY3Rpb24gaW5qZWN0KGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9pbmplY3RlZCA9IChwcm9tcHQuX2luamVjdGVkIHx8IFtdKS5jb25jYXQoYW5zd2Vycyk7XG59XG5cbmZ1bmN0aW9uIG92ZXJyaWRlKGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9vdmVycmlkZSA9IE9iamVjdC5hc3NpZ24oe30sIGFuc3dlcnMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24ocHJvbXB0LCB7XG4gIHByb21wdCxcbiAgcHJvbXB0cyxcbiAgaW5qZWN0LFxuICBvdmVycmlkZVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChrZXksIGlzU2VsZWN0KSA9PiB7XG4gIGlmIChrZXkubWV0YSAmJiBrZXkubmFtZSAhPT0gJ2VzY2FwZScpIHJldHVybjtcbiAgXG4gIGlmIChrZXkuY3RybCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2EnKSByZXR1cm4gJ2ZpcnN0JztcbiAgICBpZiAoa2V5Lm5hbWUgPT09ICdjJykgcmV0dXJuICdhYm9ydCc7XG4gICAgaWYgKGtleS5uYW1lID09PSAnZCcpIHJldHVybiAnYWJvcnQnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2UnKSByZXR1cm4gJ2xhc3QnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2cnKSByZXR1cm4gJ3Jlc2V0JztcbiAgfVxuICBcbiAgaWYgKGlzU2VsZWN0KSB7XG4gICAgaWYgKGtleS5uYW1lID09PSAnaicpIHJldHVybiAnZG93bic7XG4gICAgaWYgKGtleS5uYW1lID09PSAnaycpIHJldHVybiAndXAnO1xuICB9XG5cbiAgaWYgKGtleS5uYW1lID09PSAncmV0dXJuJykgcmV0dXJuICdzdWJtaXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlbnRlcicpIHJldHVybiAnc3VibWl0JzsgLy8gY3RybCArIEpcbiAgaWYgKGtleS5uYW1lID09PSAnYmFja3NwYWNlJykgcmV0dXJuICdkZWxldGUnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkZWxldGUnKSByZXR1cm4gJ2RlbGV0ZUZvcndhcmQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdhYm9ydCcpIHJldHVybiAnYWJvcnQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlc2NhcGUnKSByZXR1cm4gJ2V4aXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICd0YWInKSByZXR1cm4gJ25leHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdlZG93bicpIHJldHVybiAnbmV4dFBhZ2UnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdldXAnKSByZXR1cm4gJ3ByZXZQYWdlJztcbiAgLy8gVE9ETyBjcmVhdGUgaG9tZSgpIGluIHByb21wdCB0eXBlcyAoZS5nLiBUZXh0UHJvbXB0KVxuICBpZiAoa2V5Lm5hbWUgPT09ICdob21lJykgcmV0dXJuICdob21lJztcbiAgLy8gVE9ETyBjcmVhdGUgZW5kKCkgaW4gcHJvbXB0IHR5cGVzIChlLmcuIFRleHRQcm9tcHQpXG4gIGlmIChrZXkubmFtZSA9PT0gJ2VuZCcpIHJldHVybiAnZW5kJztcblxuICBpZiAoa2V5Lm5hbWUgPT09ICd1cCcpIHJldHVybiAndXAnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkb3duJykgcmV0dXJuICdkb3duJztcbiAgaWYgKGtleS5uYW1lID09PSAncmlnaHQnKSByZXR1cm4gJ3JpZ2h0JztcbiAgaWYgKGtleS5uYW1lID09PSAnbGVmdCcpIHJldHVybiAnbGVmdCc7XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBzdHIgPT4ge1xuICBjb25zdCBwYXR0ZXJuID0gW1xuICAgICdbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpJyxcbiAgICAnKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFJaY2YtbnRxcnk9Pjx+XSkpJ1xuICBdLmpvaW4oJ3wnKTtcblxuICBjb25zdCBSR1ggPSBuZXcgUmVnRXhwKHBhdHRlcm4sICdnJyk7XG4gIHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHN0ci5yZXBsYWNlKFJHWCwgJycpIDogc3RyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcblxuY29uc3Qgd2lkdGggPSBzdHIgPT4gWy4uLnN0cmlwKHN0cildLmxlbmd0aDtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvbXB0XG4gKiBAcGFyYW0ge251bWJlcn0gcGVyTGluZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHByb21wdCwgcGVyTGluZSkge1xuICBpZiAoIXBlckxpbmUpIHJldHVybiBlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApO1xuXG4gIGxldCByb3dzID0gMDtcbiAgY29uc3QgbGluZXMgPSBwcm9tcHQuc3BsaXQoL1xccj9cXG4vKTtcbiAgZm9yIChsZXQgbGluZSBvZiBsaW5lcykge1xuICAgIHJvd3MgKz0gMSArIE1hdGguZmxvb3IoTWF0aC5tYXgod2lkdGgobGluZSkgLSAxLCAwKSAvIHBlckxpbmUpO1xuICB9XG5cbiAgcmV0dXJuIGVyYXNlLmxpbmVzKHJvd3MpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcdFxuXG4gY29uc3QgbWFpbiA9IHtcbiAgYXJyb3dVcDogJ+KGkScsXG4gIGFycm93RG93bjogJ+KGkycsXG4gIGFycm93TGVmdDogJ+KGkCcsXG4gIGFycm93UmlnaHQ6ICfihpInLFxuICByYWRpb09uOiAn4peJJyxcbiAgcmFkaW9PZmY6ICfil68nLFxuICB0aWNrOiAn4pyUJyxcdFxuICBjcm9zczogJ+KclicsXHRcbiAgZWxsaXBzaXM6ICfigKYnLFx0XG4gIHBvaW50ZXJTbWFsbDogJ+KAuicsXHRcbiAgbGluZTogJ+KUgCcsXHRcbiAgcG9pbnRlcjogJ+KdrydcdFxufTtcdFxuY29uc3Qgd2luID0ge1xuICBhcnJvd1VwOiBtYWluLmFycm93VXAsXG4gIGFycm93RG93bjogbWFpbi5hcnJvd0Rvd24sXG4gIGFycm93TGVmdDogbWFpbi5hcnJvd0xlZnQsXG4gIGFycm93UmlnaHQ6IG1haW4uYXJyb3dSaWdodCxcbiAgcmFkaW9PbjogJygqKScsXG4gIHJhZGlvT2ZmOiAnKCApJyxcdFxuICB0aWNrOiAn4oiaJyxcdFxuICBjcm9zczogJ8OXJyxcdFxuICBlbGxpcHNpczogJy4uLicsXHRcbiAgcG9pbnRlclNtYWxsOiAnwrsnLFx0XG4gIGxpbmU6ICfilIAnLFx0XG4gIHBvaW50ZXI6ICc+J1x0XG59O1x0XG5jb25zdCBmaWd1cmVzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbiA6IG1haW47XHRcblxuIG1vZHVsZS5leHBvcnRzID0gZmlndXJlcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYyA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBmaWd1cmVzID0gcmVxdWlyZSgnLi9maWd1cmVzJyk7XG5cbi8vIHJlbmRlcmluZyB1c2VyIGlucHV0LlxuY29uc3Qgc3R5bGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHBhc3N3b3JkOiB7IHNjYWxlOiAxLCByZW5kZXI6IGlucHV0ID0+ICcqJy5yZXBlYXQoaW5wdXQubGVuZ3RoKSB9LFxuICBlbW9qaTogeyBzY2FsZTogMiwgcmVuZGVyOiBpbnB1dCA9PiAn8J+YgycucmVwZWF0KGlucHV0Lmxlbmd0aCkgfSxcbiAgaW52aXNpYmxlOiB7IHNjYWxlOiAwLCByZW5kZXI6IGlucHV0ID0+ICcnIH0sXG4gIGRlZmF1bHQ6IHsgc2NhbGU6IDEsIHJlbmRlcjogaW5wdXQgPT4gYCR7aW5wdXR9YCB9XG59KTtcbmNvbnN0IHJlbmRlciA9IHR5cGUgPT4gc3R5bGVzW3R5cGVdIHx8IHN0eWxlcy5kZWZhdWx0O1xuXG4vLyBpY29uIHRvIHNpZ25hbGl6ZSBhIHByb21wdC5cbmNvbnN0IHN5bWJvbHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYWJvcnRlZDogYy5yZWQoZmlndXJlcy5jcm9zcyksXG4gIGRvbmU6IGMuZ3JlZW4oZmlndXJlcy50aWNrKSxcbiAgZXhpdGVkOiBjLnllbGxvdyhmaWd1cmVzLmNyb3NzKSxcbiAgZGVmYXVsdDogYy5jeWFuKCc/Jylcbn0pO1xuXG5jb25zdCBzeW1ib2wgPSAoZG9uZSwgYWJvcnRlZCwgZXhpdGVkKSA9PlxuICBhYm9ydGVkID8gc3ltYm9scy5hYm9ydGVkIDogZXhpdGVkID8gc3ltYm9scy5leGl0ZWQgOiBkb25lID8gc3ltYm9scy5kb25lIDogc3ltYm9scy5kZWZhdWx0O1xuXG4vLyBiZXR3ZWVuIHRoZSBxdWVzdGlvbiBhbmQgdGhlIHVzZXIncyBpbnB1dC5cbmNvbnN0IGRlbGltaXRlciA9IGNvbXBsZXRpbmcgPT5cbiAgYy5ncmF5KGNvbXBsZXRpbmcgPyBmaWd1cmVzLmVsbGlwc2lzIDogZmlndXJlcy5wb2ludGVyU21hbGwpO1xuXG5jb25zdCBpdGVtID0gKGV4cGFuZGFibGUsIGV4cGFuZGVkKSA9PlxuICBjLmdyYXkoZXhwYW5kYWJsZSA/IChleHBhbmRlZCA/IGZpZ3VyZXMucG9pbnRlclNtYWxsIDogJysnKSA6IGZpZ3VyZXMubGluZSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdHlsZXMsXG4gIHJlbmRlcixcbiAgc3ltYm9scyxcbiAgc3ltYm9sLFxuICBkZWxpbWl0ZXIsXG4gIGl0ZW1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHN0cmlwID0gcmVxdWlyZSgnLi9zdHJpcCcpO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dcbiAqIEBwYXJhbSB7bnVtYmVyfSBwZXJMaW5lXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1zZywgcGVyTGluZSkge1xuICBsZXQgbGluZXMgPSBTdHJpbmcoc3RyaXAobXNnKSB8fCAnJykuc3BsaXQoL1xccj9cXG4vKTtcblxuICBpZiAoIXBlckxpbmUpIHJldHVybiBsaW5lcy5sZW5ndGg7XG4gIHJldHVybiBsaW5lcy5tYXAobCA9PiBNYXRoLmNlaWwobC5sZW5ndGggLyBwZXJMaW5lKSlcbiAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyBUaGUgbWVzc2FnZSB0byB3cmFwXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0c1xuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBbb3B0cy5tYXJnaW5dIExlZnQgbWFyZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0cy53aWR0aCBNYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUgaW5jbHVkaW5nIHRoZSBtYXJnaW5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAobXNnLCBvcHRzID0ge30pID0+IHtcbiAgY29uc3QgdGFiID0gTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQob3B0cy5tYXJnaW4pKVxuICAgID8gbmV3IEFycmF5KHBhcnNlSW50KG9wdHMubWFyZ2luKSkuZmlsbCgnICcpLmpvaW4oJycpXG4gICAgOiAob3B0cy5tYXJnaW4gfHwgJycpO1xuXG4gIGNvbnN0IHdpZHRoID0gb3B0cy53aWR0aDtcblxuICByZXR1cm4gKG1zZyB8fCAnJykuc3BsaXQoL1xccj9cXG4vZylcbiAgICAubWFwKGxpbmUgPT4gbGluZVxuICAgICAgLnNwbGl0KC9cXHMrL2cpXG4gICAgICAucmVkdWNlKChhcnIsIHcpID0+IHtcbiAgICAgICAgaWYgKHcubGVuZ3RoICsgdGFiLmxlbmd0aCA+PSB3aWR0aCB8fCBhcnJbYXJyLmxlbmd0aCAtIDFdLmxlbmd0aCArIHcubGVuZ3RoICsgMSA8IHdpZHRoKVxuICAgICAgICAgIGFyclthcnIubGVuZ3RoIC0gMV0gKz0gYCAke3d9YDtcbiAgICAgICAgZWxzZSBhcnIucHVzaChgJHt0YWJ9JHt3fWApO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfSwgWyB0YWIgXSlcbiAgICAgIC5qb2luKCdcXG4nKSlcbiAgICAuam9pbignXFxuJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZSB3aGF0IGVudHJpZXMgc2hvdWxkIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLCBiYXNlZCBvbiB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBpbmRleCBhbmQgdGhlIG1heGltdW0gdmlzaWJsZS4gVXNlZCBpbiBsaXN0LWJhc2VkXG4gKiBwcm9tcHRzIGxpa2UgYHNlbGVjdGAgYW5kIGBtdWx0aXNlbGVjdGAuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnNvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGVudHJ5XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWwgdGhlIHRvdGFsIGVudHJpZXMgYXZhaWxhYmxlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4VmlzaWJsZV0gdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGJlIGRpc3BsYXllZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChjdXJzb3IsIHRvdGFsLCBtYXhWaXNpYmxlKSAgPT4ge1xuICBtYXhWaXNpYmxlID0gbWF4VmlzaWJsZSB8fCB0b3RhbDtcblxuICBsZXQgc3RhcnRJbmRleCA9IE1hdGgubWluKHRvdGFsLSBtYXhWaXNpYmxlLCBjdXJzb3IgLSBNYXRoLmZsb29yKG1heFZpc2libGUgLyAyKSk7XG4gIGlmIChzdGFydEluZGV4IDwgMCkgc3RhcnRJbmRleCA9IDA7XG5cbiAgbGV0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIG1heFZpc2libGUsIHRvdGFsKTtcblxuICByZXR1cm4geyBzdGFydEluZGV4LCBlbmRJbmRleCB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFjdGlvbjogcmVxdWlyZSgnLi9hY3Rpb24nKSxcbiAgY2xlYXI6IHJlcXVpcmUoJy4vY2xlYXInKSxcbiAgc3R5bGU6IHJlcXVpcmUoJy4vc3R5bGUnKSxcbiAgc3RyaXA6IHJlcXVpcmUoJy4vc3RyaXAnKSxcbiAgZmlndXJlczogcmVxdWlyZSgnLi9maWd1cmVzJyksXG4gIGxpbmVzOiByZXF1aXJlKCcuL2xpbmVzJyksXG4gIHdyYXA6IHJlcXVpcmUoJy4vd3JhcCcpLFxuICBlbnRyaWVzVG9EaXNwbGF5OiByZXF1aXJlKCcuL2VudHJpZXNUb0Rpc3BsYXknKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKCdyZWFkbGluZScpO1xuY29uc3QgeyBhY3Rpb24gfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpO1xuY29uc3QgeyBiZWVwLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuLyoqXG4gKiBCYXNlIHByb21wdCBza2VsZXRvblxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKi9cbmNsYXNzIFByb21wdCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5maXJzdFJlbmRlciA9IHRydWU7XG4gICAgdGhpcy5pbiA9IG9wdHMuc3RkaW4gfHwgcHJvY2Vzcy5zdGRpbjtcbiAgICB0aGlzLm91dCA9IG9wdHMuc3Rkb3V0IHx8IHByb2Nlc3Muc3Rkb3V0O1xuICAgIHRoaXMub25SZW5kZXIgPSAob3B0cy5vblJlbmRlciB8fCAoKCkgPT4gdm9pZCAwKSkuYmluZCh0aGlzKTtcbiAgICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7IGlucHV0OnRoaXMuaW4sIGVzY2FwZUNvZGVUaW1lb3V0OjUwIH0pO1xuICAgIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmluLCBybCk7XG5cbiAgICBpZiAodGhpcy5pbi5pc1RUWSkgdGhpcy5pbi5zZXRSYXdNb2RlKHRydWUpO1xuICAgIGNvbnN0IGlzU2VsZWN0ID0gWyAnU2VsZWN0UHJvbXB0JywgJ011bHRpc2VsZWN0UHJvbXB0JyBdLmluZGV4T2YodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKSA+IC0xO1xuICAgIGNvbnN0IGtleXByZXNzID0gKHN0ciwga2V5KSA9PiB7XG4gICAgICBsZXQgYSA9IGFjdGlvbihrZXksIGlzU2VsZWN0KTtcbiAgICAgIGlmIChhID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl8gJiYgdGhpcy5fKHN0ciwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXNbYV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpc1thXShrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5iZWxsKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuY2xvc2UgPSAoKSA9PiB7XG4gICAgICB0aGlzLm91dC53cml0ZShjdXJzb3Iuc2hvdyk7XG4gICAgICB0aGlzLmluLnJlbW92ZUxpc3RlbmVyKCdrZXlwcmVzcycsIGtleXByZXNzKTtcbiAgICAgIGlmICh0aGlzLmluLmlzVFRZKSB0aGlzLmluLnNldFJhd01vZGUoZmFsc2UpO1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHRoaXMuZW1pdCh0aGlzLmFib3J0ZWQgPyAnYWJvcnQnIDogdGhpcy5leGl0ZWQgPyAnZXhpdCcgOiAnc3VibWl0JywgdGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgfTtcblxuICAgIHRoaXMuaW4ub24oJ2tleXByZXNzJywga2V5cHJlc3MpO1xuICB9XG5cbiAgZmlyZSgpIHtcbiAgICB0aGlzLmVtaXQoJ3N0YXRlJywge1xuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBhYm9ydGVkOiAhIXRoaXMuYWJvcnRlZCxcbiAgICAgIGV4aXRlZDogISF0aGlzLmV4aXRlZFxuICAgIH0pO1xuICB9XG5cbiAgYmVsbCgpIHtcbiAgICB0aGlzLm91dC53cml0ZShiZWVwKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLm9uUmVuZGVyKGNvbG9yKTtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5maXJzdFJlbmRlciA9IGZhbHNlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbXB0O1xuIiwiY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcbmNvbnN0IHsgZXJhc2UsIGN1cnNvciB9ID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpO1xuY29uc3QgeyBzdHlsZSwgY2xlYXIsIGxpbmVzLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnN0eWxlPSdkZWZhdWx0J10gUmVuZGVyIHN0eWxlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuY2xhc3MgVGV4dFByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gb3B0cy5pbml0aWFsIHx8IGBgO1xuICAgIHRoaXMudmFsaWRhdG9yID0gb3B0cy52YWxpZGF0ZSB8fCAoKCkgPT4gdHJ1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8IGBQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZWA7XG4gICAgdGhpcy5jdXJzb3IgPSBOdW1iZXIoISF0aGlzLmluaXRpYWwpO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMDtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIoYGAsIHRoaXMub3V0LmNvbHVtbnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXQgdmFsdWUodikge1xuICAgIGlmICghdiAmJiB0aGlzLmluaXRpYWwpIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXJlZCA9IGNvbG9yLmdyYXkodGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5pdGlhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHYpO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gYXdhaXQgdGhpcy52YWxpZGF0b3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gYHN0cmluZ2ApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZWQgPSB0cnVlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IrbjtcbiAgICB0aGlzLmN1cnNvck9mZnNldCArPSBuO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBsZXQgczEgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtjfSR7czJ9YDtcbiAgICB0aGlzLnJlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5wbGFjZWhvbGRlciA/IDAgOiBzMS5sZW5ndGgrMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmlzQ3Vyc29yQXRTdGFydCgpKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgbGV0IHMxID0gdGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLmN1cnNvci0xKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdFN0YXJ0KCkpIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCsrO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZUZvcndhcmQoKSB7XG4gICAgaWYodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCB8fCB0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgbGV0IHMxID0gdGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLmN1cnNvcik7XG4gICAgbGV0IHMyID0gdGhpcy52YWx1ZS5zbGljZSh0aGlzLmN1cnNvcisxKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdEVuZCgpKSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0Kys7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBmaXJzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxhc3QoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPD0gMCB8fCB0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yKnRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGggfHwgdGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMubW92ZUN1cnNvcigxKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgaXNDdXJzb3JBdFN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLmN1cnNvciA9PT0gMCB8fCAodGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLmN1cnNvciA9PT0gMSk7XG4gIH1cblxuICBpc0N1cnNvckF0RW5kKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnNvciA9PT0gdGhpcy5yZW5kZXJlZC5sZW5ndGggfHwgKHRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5jdXJzb3IgPT09IHRoaXMucmVuZGVyZWQubGVuZ3RoICsgMSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RSZW5kZXIpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dEVycm9yKVxuICAgICAgICB0aGlzLm91dC53cml0ZShjdXJzb3IuZG93bihsaW5lcyh0aGlzLm91dHB1dEVycm9yLCB0aGlzLm91dC5jb2x1bW5zKSAtIDEpICsgY2xlYXIodGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgfVxuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0RXJyb3IgPSAnJztcblxuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtcbiAgICAgIHN0eWxlLnN5bWJvbCh0aGlzLmRvbmUsIHRoaXMuYWJvcnRlZCksXG4gICAgICBjb2xvci5ib2xkKHRoaXMubXNnKSxcbiAgICAgIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLFxuICAgICAgdGhpcy5yZWQgPyBjb2xvci5yZWQodGhpcy5yZW5kZXJlZCkgOiB0aGlzLnJlbmRlcmVkXG4gICAgXS5qb2luKGAgYCk7XG5cbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5vdXRwdXRFcnJvciArPSB0aGlzLmVycm9yTXNnLnNwbGl0KGBcXG5gKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGwsIGkpID0+IGEgKyBgXFxuJHtpID8gJyAnIDogZmlndXJlcy5wb2ludGVyU21hbGx9ICR7Y29sb3IucmVkKCkuaXRhbGljKGwpfWAsIGBgKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0ICsgY3Vyc29yLnNhdmUgKyB0aGlzLm91dHB1dEVycm9yICsgY3Vyc29yLnJlc3RvcmUgKyBjdXJzb3IubW92ZSh0aGlzLmN1cnNvck9mZnNldCwgMCkpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVGV4dFByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IHN0eWxlLCBjbGVhciwgZmlndXJlcywgd3JhcCwgZW50cmllc1RvRGlzcGxheSB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuY29uc3QgeyBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcblxuLyoqXG4gKiBTZWxlY3RQcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7QXJyYXl9IG9wdHMuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2Ugb2JqZWN0c1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmhpbnRdIEhpbnQgdG8gZGlzcGxheVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLm9wdGlvbnNQZXJQYWdlPTEwXSBNYXggb3B0aW9ucyB0byBkaXNwbGF5IGF0IG9uY2VcbiAqL1xuY2xhc3MgU2VsZWN0UHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnLSBVc2UgYXJyb3cta2V5cy4gUmV0dXJuIHRvIHN1Ym1pdC4nO1xuICAgIHRoaXMud2FybiA9IG9wdHMud2FybiB8fCAnLSBUaGlzIG9wdGlvbiBpcyBkaXNhYmxlZCc7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmluaXRpYWwgfHwgMDtcbiAgICB0aGlzLmNob2ljZXMgPSBvcHRzLmNob2ljZXMubWFwKChjaCwgaWR4KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNoID09PSAnc3RyaW5nJylcbiAgICAgICAgY2ggPSB7dGl0bGU6IGNoLCB2YWx1ZTogaWR4fTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBjaCAmJiAoY2gudGl0bGUgfHwgY2gudmFsdWUgfHwgY2gpLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBjaCAmJiBjaC5kZXNjcmlwdGlvbixcbiAgICAgICAgc2VsZWN0ZWQ6IGNoICYmIGNoLnNlbGVjdGVkLFxuICAgICAgICBkaXNhYmxlZDogY2ggJiYgY2guZGlzYWJsZWRcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5vcHRpb25zUGVyUGFnZSA9IG9wdHMub3B0aW9uc1BlclBhZ2UgfHwgMTA7XG4gICAgdGhpcy52YWx1ZSA9ICh0aGlzLmNob2ljZXNbdGhpcy5jdXJzb3JdIHx8IHt9KS52YWx1ZTtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIoJycsIHRoaXMub3V0LmNvbHVtbnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLmN1cnNvciA9IG47XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hvaWNlc1tuXS52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5hYm9ydGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlXG4gICAgICB0aGlzLmJlbGwoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmNob2ljZXMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciAtIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IHRoaXMuY2hvaWNlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3IoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciArIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IoKHRoaXMuY3Vyc29yICsgMSkgJSB0aGlzLmNob2ljZXMubGVuZ3RoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSByZXR1cm4gdGhpcy5zdWJtaXQoKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hvaWNlc1t0aGlzLmN1cnNvcl07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMub3B0aW9uc1BlclBhZ2UpO1xuXG4gICAgLy8gUHJpbnQgcHJvbXB0XG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMuZG9uZSA/IHRoaXMuc2VsZWN0aW9uLnRpdGxlIDogdGhpcy5zZWxlY3Rpb24uZGlzYWJsZWRcbiAgICAgICAgICA/IGNvbG9yLnllbGxvdyh0aGlzLndhcm4pIDogY29sb3IuZ3JheSh0aGlzLmhpbnQpXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICAvLyBQcmludCBjaG9pY2VzXG4gICAgaWYgKCF0aGlzLmRvbmUpIHtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSAnXFxuJztcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykge1xuICAgICAgICBsZXQgdGl0bGUsIHByZWZpeCwgZGVzYyA9ICcnLCB2ID0gdGhpcy5jaG9pY2VzW2ldO1xuXG4gICAgICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRvIGRpc3BsYXkgXCJtb3JlIGNob2ljZXNcIiBpbmRpY2F0b3JzXG4gICAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd1VwO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93RG93bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgICAgICAgcHJlZml4ID0gKHRoaXMuY3Vyc29yID09PSBpID8gY29sb3IuYm9sZCgpLmdyYXkoZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICAgICAgICBwcmVmaXggPSAodGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKGZpZ3VyZXMucG9pbnRlcikgKyAnICcgOiAnICAnKSArIHByZWZpeDtcbiAgICAgICAgICBpZiAodi5kZXNjcmlwdGlvbiAmJiB0aGlzLmN1cnNvciA9PT0gaSkge1xuICAgICAgICAgICAgZGVzYyA9IGAgLSAke3YuZGVzY3JpcHRpb259YDtcbiAgICAgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1uc1xuICAgICAgICAgICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGRlc2MgPSAnXFxuJyArIHdyYXAodi5kZXNjcmlwdGlvbiwgeyBtYXJnaW46IDMsIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgJHtwcmVmaXh9ICR7dGl0bGV9JHtjb2xvci5ncmF5KGRlc2MpfVxcbmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUodGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlbGVjdFByb21wdDtcbiIsImNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IHN0eWxlLCBjbGVhciB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuY29uc3QgeyBjdXJzb3IsIGVyYXNlIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5cbi8qKlxuICogVG9nZ2xlUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5hY3RpdmU9J25vJ10gQWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5hY3RpdmU9J29mZiddIEluYWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgVG9nZ2xlUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLmFjdGl2ZSA9IG9wdHMuYWN0aXZlIHx8ICdvbic7XG4gICAgdGhpcy5pbmFjdGl2ZSA9IG9wdHMuaW5hY3RpdmUgfHwgJ29mZic7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHRydWUpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICB9XG4gIGxlZnQoKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cbiAgcmlnaHQoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZSgpO1xuICB9XG4gIGRvd24oKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cbiAgdXAoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZSgpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnZhbHVlID0gIXRoaXMudmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy52YWx1ZSA9ICF0aGlzLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzEnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICcwJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIGVsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIodGhpcy5kb25lKSxcbiAgICAgIHRoaXMudmFsdWUgPyB0aGlzLmluYWN0aXZlIDogY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmluYWN0aXZlKSxcbiAgICAgIGNvbG9yLmdyYXkoJy8nKSxcbiAgICAgIHRoaXMudmFsdWUgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHRoaXMuYWN0aXZlKSA6IHRoaXMuYWN0aXZlXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvZ2dsZVByb21wdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY2xhc3MgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3Rvcih7dG9rZW4sIGRhdGUsIHBhcnRzLCBsb2NhbGVzfSkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLmRhdGUgPSBkYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzIHx8IFt0aGlzXTtcbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzIHx8IHt9O1xuICB9XG5cbiAgdXAoKSB7fVxuXG4gIGRvd24oKSB7fVxuXG4gIG5leHQoKSB7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHRoaXMucGFydHMuaW5kZXhPZih0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5maW5kKChwYXJ0LCBpZHgpID0+IGlkeCA+IGN1cnJlbnRJZHggJiYgcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge31cblxuICBwcmV2KCkge1xuICAgIGxldCBwYXJ0cyA9IFtdLmNvbmNhdCh0aGlzLnBhcnRzKS5yZXZlcnNlKCk7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHBhcnRzLmluZGV4T2YodGhpcyk7XG4gICAgcmV0dXJuIHBhcnRzLmZpbmQoKHBhcnQsIGlkeCkgPT4gaWR4ID4gY3VycmVudElkeCAmJiBwYXJ0IGluc3RhbmNlb2YgRGF0ZVBhcnQpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0ZVBhcnQ7XG5cblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRIb3VycygodGhpcy5kYXRlLmdldEhvdXJzKCkgKyAxMikgJSAyNCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMudXAoKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtZXJpZGllbSA9IHRoaXMuZGF0ZS5nZXRIb3VycygpID4gMTIgPyAncG0nIDogJ2FtJztcbiAgICByZXR1cm4gL1xcQS8udGVzdCh0aGlzLnRva2VuKSA/IG1lcmlkaWVtLnRvVXBwZXJDYXNlKCkgOiBtZXJpZGllbTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1lcmlkaWVtO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY29uc3QgcG9zID0gbiA9PiB7XG4gIG4gPSBuICUgMTA7XG4gIHJldHVybiBuID09PSAxID8gJ3N0J1xuICAgICAgIDogbiA9PT0gMiA/ICduZCdcbiAgICAgICA6IG4gPT09IDMgPyAncmQnXG4gICAgICAgOiAndGgnO1xufVxuXG5jbGFzcyBEYXkgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHRoaXMuZGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldERhdGUodGhpcy5kYXRlLmdldERhdGUoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldERhdGUocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBkYXRlID0gdGhpcy5kYXRlLmdldERhdGUoKTtcbiAgICBsZXQgZGF5ID0gdGhpcy5kYXRlLmdldERheSgpO1xuICAgIHJldHVybiB0aGlzLnRva2VuID09PSAnREQnID8gU3RyaW5nKGRhdGUpLnBhZFN0YXJ0KDIsICcwJylcbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ0RvJyA/IGRhdGUgKyBwb3MoZGF0ZSlcbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ2QnID8gZGF5ICsgMVxuICAgICAgICAgOiB0aGlzLnRva2VuID09PSAnZGRkJyA/IHRoaXMubG9jYWxlcy53ZWVrZGF5c1Nob3J0W2RheV1cbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ2RkZGQnID8gdGhpcy5sb2NhbGVzLndlZWtkYXlzW2RheV1cbiAgICAgICAgIDogZGF0ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERheTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIEhvdXJzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnModGhpcy5kYXRlLmdldEhvdXJzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHRoaXMuZGF0ZS5nZXRIb3VycygpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBob3VycyA9IHRoaXMuZGF0ZS5nZXRIb3VycygpO1xuICAgIGlmICgvaC8udGVzdCh0aGlzLnRva2VuKSlcbiAgICAgIGhvdXJzID0gKGhvdXJzICUgMTIpIHx8IDEyO1xuICAgIHJldHVybiB0aGlzLnRva2VuLmxlbmd0aCA+IDEgPyBTdHJpbmcoaG91cnMpLnBhZFN0YXJ0KDIsICcwJykgOiBob3VycztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhvdXJzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgTWlsbGlzZWNvbmRzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbGxpc2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC0odGhpcy50b2tlbi5sZW5ndGgpKSkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpLnBhZFN0YXJ0KDQsICcwJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic3RyKDAsIHRoaXMudG9rZW4ubGVuZ3RoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1pbGxpc2Vjb25kcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1pbnV0ZXMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNaW51dGVzKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXModGhpcy5kYXRlLmdldE1pbnV0ZXMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtID0gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKG0pLnBhZFN0YXJ0KDIsICcwJykgOiBtO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTWludXRlcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1vbnRoIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TW9udGgodGhpcy5kYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1vbnRoKHRoaXMuZGF0ZS5nZXRNb250aCgpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB2YWwgPSBwYXJzZUludCh2YWwuc3Vic3RyKC0yKSkgLSAxO1xuICAgIHRoaXMuZGF0ZS5zZXRNb250aCh2YWwgPCAwID8gMCA6IHZhbCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcbiAgICBsZXQgdGwgPSB0aGlzLnRva2VuLmxlbmd0aDtcbiAgICByZXR1cm4gdGwgPT09IDIgPyBTdHJpbmcobW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgICAgICAgIDogdGwgPT09IDMgPyB0aGlzLmxvY2FsZXMubW9udGhzU2hvcnRbbW9udGhdXG4gICAgICAgICAgICAgOiB0bCA9PT0gNCA/IHRoaXMubG9jYWxlcy5tb250aHNbbW9udGhdXG4gICAgICAgICAgICAgICA6IFN0cmluZyhtb250aCArIDEpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTW9udGg7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBTZWNvbmRzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRTZWNvbmRzKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHRoaXMuZGF0ZS5zZXRTZWNvbmRzKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgcyA9IHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID4gMSA/IFN0cmluZyhzKS5wYWRTdGFydCgyLCAnMCcpIDogcztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlY29uZHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBZZWFyIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEZ1bGxZZWFyKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodmFsLnN1YnN0cigtNCkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHllYXIgPSBTdHJpbmcodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID09PSAyID8geWVhci5zdWJzdHIoLTIpIDogeWVhcjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFllYXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBEYXRlUGFydDogcmVxdWlyZSgnLi9kYXRlcGFydCcpLFxuICBNZXJpZGllbTogcmVxdWlyZSgnLi9tZXJpZGllbScpLFxuICBEYXk6IHJlcXVpcmUoJy4vZGF5JyksXG4gIEhvdXJzOiByZXF1aXJlKCcuL2hvdXJzJyksXG4gIE1pbGxpc2Vjb25kczogcmVxdWlyZSgnLi9taWxsaXNlY29uZHMnKSxcbiAgTWludXRlczogcmVxdWlyZSgnLi9taW51dGVzJyksXG4gIE1vbnRoOiByZXF1aXJlKCcuL21vbnRoJyksXG4gIFNlY29uZHM6IHJlcXVpcmUoJy4vc2Vjb25kcycpLFxuICBZZWFyOiByZXF1aXJlKCcuL3llYXInKSxcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcbmNvbnN0IHsgc3R5bGUsIGNsZWFyLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IHsgRGF0ZVBhcnQsIE1lcmlkaWVtLCBEYXksIEhvdXJzLCBNaWxsaXNlY29uZHMsIE1pbnV0ZXMsIE1vbnRoLCBTZWNvbmRzLCBZZWFyIH0gPSByZXF1aXJlKCcuLi9kYXRlcGFydHMnKTtcblxuY29uc3QgcmVnZXggPSAvXFxcXCguKXxcIigoPzpcXFxcW1wiXFxcXF18W15cIl0pKylcInwoRFtEb10/fGR7Myw0fXxkKXwoTXsxLDR9KXwoWVkoPzpZWSk/KXwoW2FBXSl8KFtIaF17MSwyfSl8KG17MSwyfSl8KHN7MSwyfSl8KFN7MSw0fSl8Li9nO1xuY29uc3QgcmVnZXhHcm91cHMgPSB7XG4gIDE6ICh7dG9rZW59KSA9PiB0b2tlbi5yZXBsYWNlKC9cXFxcKC4pL2csICckMScpLFxuICAyOiAob3B0cykgPT4gbmV3IERheShvcHRzKSwgLy8gRGF5IC8vIFRPRE9cbiAgMzogKG9wdHMpID0+IG5ldyBNb250aChvcHRzKSwgLy8gTW9udGhcbiAgNDogKG9wdHMpID0+IG5ldyBZZWFyKG9wdHMpLCAvLyBZZWFyXG4gIDU6IChvcHRzKSA9PiBuZXcgTWVyaWRpZW0ob3B0cyksIC8vIEFNL1BNIC8vIFRPRE8gKHNwZWNpYWwpXG4gIDY6IChvcHRzKSA9PiBuZXcgSG91cnMob3B0cyksIC8vIEhvdXJzXG4gIDc6IChvcHRzKSA9PiBuZXcgTWludXRlcyhvcHRzKSwgLy8gTWludXRlc1xuICA4OiAob3B0cykgPT4gbmV3IFNlY29uZHMob3B0cyksIC8vIFNlY29uZHNcbiAgOTogKG9wdHMpID0+IG5ldyBNaWxsaXNlY29uZHMob3B0cyksIC8vIEZyYWN0aW9uYWwgc2Vjb25kc1xufVxuXG5jb25zdCBkZmx0TG9jYWxlcyA9IHtcbiAgbW9udGhzOiAnSmFudWFyeSxGZWJydWFyeSxNYXJjaCxBcHJpbCxNYXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlcicuc3BsaXQoJywnKSxcbiAgbW9udGhzU2hvcnQ6ICdKYW4sRmViLE1hcixBcHIsTWF5LEp1bixKdWwsQXVnLFNlcCxPY3QsTm92LERlYycuc3BsaXQoJywnKSxcbiAgd2Vla2RheXM6ICdTdW5kYXksTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheScuc3BsaXQoJywnKSxcbiAgd2Vla2RheXNTaG9ydDogJ1N1bixNb24sVHVlLFdlZCxUaHUsRnJpLFNhdCcuc3BsaXQoJywnKVxufVxuXG5cbi8qKlxuICogRGF0ZVByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5tYXNrXSBUaGUgZm9ybWF0IG1hc2tcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0cy5sb2NhbGVzXSBUaGUgZGF0ZSBsb2NhbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZXJyb3JdIFRoZSBlcnJvciBtZXNzYWdlIHNob3duIG9uIGludmFsaWQgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgc3VibWl0dGVkIHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgRGF0ZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLm1zZyA9IG9wdHMubWVzc2FnZTtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMubG9jYWxlcyA9IE9iamVjdC5hc3NpZ24oZGZsdExvY2FsZXMsIG9wdHMubG9jYWxlcyk7XG4gICAgdGhpcy5fZGF0ZSA9IG9wdHMuaW5pdGlhbCB8fCBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8ICdQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZSc7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcbiAgICB0aGlzLm1hc2sgPSBvcHRzLm1hc2sgfHwgJ1lZWVktTU0tREQgSEg6bW06c3MnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlXG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGUpIHtcbiAgICBpZiAoZGF0ZSkgdGhpcy5fZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHNldCBtYXNrKG1hc2spIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMucGFydHMgPSBbXTtcbiAgICB3aGlsZShyZXN1bHQgPSByZWdleC5leGVjKG1hc2spKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZXN1bHQuc2hpZnQoKTtcbiAgICAgIGxldCBpZHggPSByZXN1bHQuZmluZEluZGV4KGdyID0+IGdyICE9IG51bGwpO1xuICAgICAgdGhpcy5wYXJ0cy5wdXNoKGlkeCBpbiByZWdleEdyb3Vwc1xuICAgICAgICA/IHJlZ2V4R3JvdXBzW2lkeF0oeyB0b2tlbjogcmVzdWx0W2lkeF0gfHwgbWF0Y2gsIGRhdGU6IHRoaXMuZGF0ZSwgcGFydHM6IHRoaXMucGFydHMsIGxvY2FsZXM6IHRoaXMubG9jYWxlcyB9KVxuICAgICAgICA6IHJlc3VsdFtpZHhdIHx8IG1hdGNoKTtcbiAgICB9XG5cbiAgICBsZXQgcGFydHMgPSB0aGlzLnBhcnRzLnJlZHVjZSgoYXJyLCBpKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBhcnJbYXJyLmxlbmd0aCAtIDFdID09PSAnc3RyaW5nJylcbiAgICAgICAgYXJyW2Fyci5sZW5ndGggLSAxXSArPSBpO1xuICAgICAgZWxzZSBhcnIucHVzaChpKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW10pO1xuXG4gICAgdGhpcy5wYXJ0cy5zcGxpY2UoMCk7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKC4uLnBhcnRzKTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLnR5cGVkID0gJyc7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuZmluZEluZGV4KHAgPT4gcCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gYXdhaXQgdGhpcy52YWxpZGF0b3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLmNvbG9yID0gJ3JlZCc7XG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgdGhpcy5hYm9ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnVwKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLmRvd24oKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBsZXQgcHJldiA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnByZXYoKTtcbiAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuaW5kZXhPZihwcmV2KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0ubmV4dCgpO1xuICAgIGlmIChuZXh0ID09IG51bGwpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5wYXJ0cy5pbmRleE9mKG5leHQpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLm5leHQoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IobmV4dFxuICAgICAgPyB0aGlzLnBhcnRzLmluZGV4T2YobmV4dClcbiAgICAgIDogdGhpcy5wYXJ0cy5maW5kSW5kZXgoKHBhcnQpID0+IHBhcnQgaW5zdGFuY2VvZiBEYXRlUGFydCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMpIHtcbiAgICBpZiAoL1xcZC8udGVzdChjKSkge1xuICAgICAgdGhpcy50eXBlZCArPSBjO1xuICAgICAgdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0uc2V0VG8odGhpcy50eXBlZCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIGVsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAvLyBQcmludCBwcm9tcHRcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIoZmFsc2UpLFxuICAgICAgdGhpcy5wYXJ0cy5yZWR1Y2UoKGFyciwgcCwgaWR4KSA9PiBhcnIuY29uY2F0KGlkeCA9PT0gdGhpcy5jdXJzb3IgJiYgIXRoaXMuZG9uZSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUocC50b1N0cmluZygpKSA6IHApLCBbXSlcbiAgICAgICAgICAuam9pbignJylcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIC8vIFByaW50IGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSB0aGlzLmVycm9yTXNnLnNwbGl0KCdcXG4nKS5yZWR1Y2UoXG4gICAgICAgICAgKGEsIGwsIGkpID0+IGEgKyBgXFxuJHtpID8gYCBgIDogZmlndXJlcy5wb2ludGVyU21hbGx9ICR7Y29sb3IucmVkKCkuaXRhbGljKGwpfWAsIGBgKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGVQcm9tcHQ7XG4iLCJjb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuY29uc3QgeyBjdXJzb3IsIGVyYXNlIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5jb25zdCB7IHN0eWxlLCBmaWd1cmVzLCBjbGVhciwgbGluZXMgfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuY29uc3QgaXNOdW1iZXIgPSAvWzAtOV0vO1xuY29uc3QgaXNEZWYgPSBhbnkgPT4gYW55ICE9PSB1bmRlZmluZWQ7XG5jb25zdCByb3VuZCA9IChudW1iZXIsIHByZWNpc2lvbikgPT4ge1xuICBsZXQgZmFjdG9yID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBNYXRoLnJvdW5kKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59XG5cbi8qKlxuICogTnVtYmVyUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc3R5bGU9J2RlZmF1bHQnXSBSZW5kZXIgc3R5bGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbml0aWFsXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4PStJbmZpbml0eV0gTWF4IHZhbHVlXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWluPS1JbmZpbml0eV0gTWluIHZhbHVlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuY2xhc3MgTnVtYmVyUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMudHJhbnNmb3JtID0gc3R5bGUucmVuZGVyKG9wdHMuc3R5bGUpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuaW5pdGlhbCA9IGlzRGVmKG9wdHMuaW5pdGlhbCkgPyBvcHRzLmluaXRpYWwgOiAnJztcbiAgICB0aGlzLmZsb2F0ID0gISFvcHRzLmZsb2F0O1xuICAgIHRoaXMucm91bmQgPSBvcHRzLnJvdW5kIHx8IDI7XG4gICAgdGhpcy5pbmMgPSBvcHRzLmluY3JlbWVudCB8fCAxO1xuICAgIHRoaXMubWluID0gaXNEZWYob3B0cy5taW4pID8gb3B0cy5taW4gOiAtSW5maW5pdHk7XG4gICAgdGhpcy5tYXggPSBpc0RlZihvcHRzLm1heCkgPyBvcHRzLm1heCA6IEluZmluaXR5O1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8IGBQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZWA7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy5sYXN0SGl0ID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdiAhPT0gMCkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gY29sb3IuZ3JheSh0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7dGhpcy5pbml0aWFsfWApKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gYGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSB0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7cm91bmQodiwgdGhpcy5yb3VuZCl9YCk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHJvdW5kKHYsIHRoaXMucm91bmQpO1xuICAgIH1cbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwYXJzZSh4KSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXQgPyBwYXJzZUZsb2F0KHgpIDogcGFyc2VJbnQoeCk7XG4gIH1cblxuICB2YWxpZChjKSB7XG4gICAgcmV0dXJuIGMgPT09IGAtYCB8fCBjID09PSBgLmAgJiYgdGhpcy5mbG9hdCB8fCBpc051bWJlci50ZXN0KGMpXG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIGxldCB4ID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0geCAhPT0gYGAgPyB4IDogdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoYFxcbmApO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdG9yKHRoaXMudmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsaWQgPT09IGBzdHJpbmdgKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdmFsaWQ7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmVycm9yID0gIXZhbGlkO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0KCkge1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5jb2xvciA9IGByZWRgO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeCA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHggIT09IGBgID8geCA6IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKGBcXG5gKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgaWYodGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiAtIHRoaXMuaW5jO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgKz0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgaWYodGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiArIHRoaXMuaW5jO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA8PSB0aGlzLm1pbikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgLT0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGxldCB2YWwgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZSgodmFsID0gdmFsLnNsaWNlKDAsIC0xKSkpIHx8IGBgO1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSAnJyAmJiB0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGlmICghdGhpcy52YWxpZChjKSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0SGl0ID4gMTAwMCkgdGhpcy50eXBlZCA9IGBgOyAvLyAxcyBlbGFwc2VkXG4gICAgdGhpcy50eXBlZCArPSBjO1xuICAgIHRoaXMubGFzdEhpdCA9IG5vdztcbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuXG4gICAgaWYgKGMgPT09IGAuYCkgcmV0dXJuIHRoaXMuZmlyZSgpO1xuXG4gICAgdGhpcy52YWx1ZSA9IE1hdGgubWluKHRoaXMucGFyc2UodGhpcy50eXBlZCksIHRoaXMubWF4KTtcbiAgICBpZiAodGhpcy52YWx1ZSA+IHRoaXMubWF4KSB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgaWYgKHRoaXMudmFsdWUgPCB0aGlzLm1pbikgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZpcnN0UmVuZGVyKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXRFcnJvcilcbiAgICAgICAgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmRvd24obGluZXModGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykgLSAxKSArIGNsZWFyKHRoaXMub3V0cHV0RXJyb3IsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIH1cbiAgICBzdXBlci5yZW5kZXIoKTtcbiAgICB0aGlzLm91dHB1dEVycm9yID0gJyc7XG5cbiAgICAvLyBQcmludCBwcm9tcHRcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIodGhpcy5kb25lKSxcbiAgICAgICF0aGlzLmRvbmUgfHwgKCF0aGlzLmRvbmUgJiYgIXRoaXMucGxhY2Vob2xkZXIpXG4gICAgICAgICAgPyBjb2xvclt0aGlzLmNvbG9yXSgpLnVuZGVybGluZSh0aGlzLnJlbmRlcmVkKSA6IHRoaXMucmVuZGVyZWRcbiAgICBdLmpvaW4oYCBgKTtcblxuICAgIC8vIFByaW50IGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0RXJyb3IgKz0gdGhpcy5lcnJvck1zZy5zcGxpdChgXFxuYClcbiAgICAgICAgICAucmVkdWNlKChhLCBsLCBpKSA9PiBhICsgYFxcbiR7aSA/IGAgYCA6IGZpZ3VyZXMucG9pbnRlclNtYWxsfSAke2NvbG9yLnJlZCgpLml0YWxpYyhsKX1gLCBgYCk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCArIGN1cnNvci5zYXZlICsgdGhpcy5vdXRwdXRFcnJvciArIGN1cnNvci5yZXN0b3JlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlclByb21wdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgeyBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IGNsZWFyLCBmaWd1cmVzLCBzdHlsZSwgd3JhcCwgZW50cmllc1RvRGlzcGxheSB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgTXVsdGlzZWxlY3RQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgLSc7XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IG9wdHMubWluO1xuICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5tYXhDaG9pY2VzID0gb3B0cy5tYXg7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBvcHRzLmluc3RydWN0aW9ucztcbiAgICB0aGlzLm9wdGlvbnNQZXJQYWdlID0gb3B0cy5vcHRpb25zUGVyUGFnZSB8fCAxMDtcbiAgICB0aGlzLnZhbHVlID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpXG4gICAgICAgIGNoID0ge3RpdGxlOiBjaCwgdmFsdWU6IGlkeH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGNoICYmIGNoLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgaWYgKCFvcHRzLm92ZXJyaWRlUmVuZGVyKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUubWFwKHYgPT4gIXYuc2VsZWN0ZWQpO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuZmlsdGVyKHYgPT4gdi5zZWxlY3RlZCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZVxuICAgICAgLmZpbHRlcihlID0+IGUuc2VsZWN0ZWQpO1xuICAgIGlmICh0aGlzLm1pblNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aCA8IHRoaXMubWluU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2hvd01pbkVycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlyZSgpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBmaXJzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxhc3QoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuICBuZXh0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gKHRoaXMuY3Vyc29yICsgMSkgJSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSAwKSB7XG4gICAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3ItLTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxlZnQoKSB7XG4gICAgdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgaGFuZGxlU3BhY2VUb2dnbGUoKSB7XG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdO1xuXG4gICAgaWYgKHYuc2VsZWN0ZWQpIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIGlmICh2LmRpc2FibGVkIHx8IHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQWxsKCkge1xuICAgIGlmICh0aGlzLm1heENob2ljZXMgIT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gIXRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLnNlbGVjdGVkO1xuICAgIHRoaXMudmFsdWUuZmlsdGVyKHYgPT4gIXYuZGlzYWJsZWQpLmZvckVhY2godiA9PiB2LnNlbGVjdGVkID0gbmV3U2VsZWN0ZWQpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGlmIChjID09PSAnICcpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3BhY2VUb2dnbGUoKTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICdhJykge1xuICAgICAgdGhpcy50b2dnbGVBbGwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pbnN0cnVjdGlvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmluc3RydWN0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RydWN0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdHJ1Y3Rpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdcXG5JbnN0cnVjdGlvbnM6XFxuJ1xuICAgICAgICArIGAgICAgJHtmaWd1cmVzLmFycm93VXB9LyR7ZmlndXJlcy5hcnJvd0Rvd259OiBIaWdobGlnaHQgb3B0aW9uXFxuYFxuICAgICAgICArIGAgICAgJHtmaWd1cmVzLmFycm93TGVmdH0vJHtmaWd1cmVzLmFycm93UmlnaHR9L1tzcGFjZV06IFRvZ2dsZSBzZWxlY3Rpb25cXG5gXG4gICAgICAgICsgKHRoaXMubWF4Q2hvaWNlcyA9PT0gdW5kZWZpbmVkID8gYCAgICBhOiBUb2dnbGUgYWxsXFxuYCA6ICcnKVxuICAgICAgICArIGAgICAgZW50ZXIvcmV0dXJuOiBDb21wbGV0ZSBhbnN3ZXJgO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJPcHRpb24oY3Vyc29yLCB2LCBpLCBhcnJvd0luZGljYXRvcikge1xuICAgIGNvbnN0IHByZWZpeCA9ICh2LnNlbGVjdGVkID8gY29sb3IuZ3JlZW4oZmlndXJlcy5yYWRpb09uKSA6IGZpZ3VyZXMucmFkaW9PZmYpICsgJyAnICsgYXJyb3dJbmRpY2F0b3IgKyAnICc7XG4gICAgbGV0IHRpdGxlLCBkZXNjO1xuXG4gICAgaWYgKHYuZGlzYWJsZWQpIHtcbiAgICAgIHRpdGxlID0gY3Vyc29yID09PSBpID8gY29sb3IuZ3JheSgpLnVuZGVybGluZSh2LnRpdGxlKSA6IGNvbG9yLnN0cmlrZXRocm91Z2goKS5ncmF5KHYudGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgICAgaWYgKGN1cnNvciA9PT0gaSAmJiB2LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2MgPSBgIC0gJHt2LmRlc2NyaXB0aW9ufWA7XG4gICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1uc1xuICAgICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZGVzYyA9ICdcXG4nICsgd3JhcCh2LmRlc2NyaXB0aW9uLCB7IG1hcmdpbjogcHJlZml4Lmxlbmd0aCwgd2lkdGg6IHRoaXMub3V0LmNvbHVtbnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ICsgdGl0bGUgKyBjb2xvci5ncmF5KGRlc2MgfHwgJycpO1xuICB9XG5cbiAgLy8gc2hhcmVkIHdpdGggYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RcbiAgcGFnaW5hdGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjb2xvci5yZWQoJ05vIG1hdGNoZXMgZm9yIHRoaXMgcXVlcnkuJyk7XG4gICAgfVxuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIG9wdGlvbnMubGVuZ3RoLCB0aGlzLm9wdGlvbnNQZXJQYWdlKTtcbiAgICBsZXQgcHJlZml4LCBzdHlsZWRPcHRpb25zID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyBpKyspIHtcbiAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgIHByZWZpeCA9IGZpZ3VyZXMuYXJyb3dVcDtcbiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gZW5kSW5kZXggLSAxICYmIGVuZEluZGV4IDwgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd0Rvd247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICB9XG4gICAgICBzdHlsZWRPcHRpb25zLnB1c2godGhpcy5yZW5kZXJPcHRpb24odGhpcy5jdXJzb3IsIG9wdGlvbnNbaV0sIGksIHByZWZpeCkpO1xuICAgIH1cblxuICAgIHJldHVybiAnXFxuJyArIHN0eWxlZE9wdGlvbnMuam9pbignXFxuJyk7XG4gIH1cblxuICAvLyBzaGFyZWQgd2l0aCBhdXRvY29tbGV0ZU11bHRpc2VsZWN0XG4gIHJlbmRlck9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJlbmRlckRvbmVPckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZVxuICAgICAgICAuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZClcbiAgICAgICAgLm1hcCh2ID0+IHYudGl0bGUpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IFtjb2xvci5ncmF5KHRoaXMuaGludCksIHRoaXMucmVuZGVySW5zdHJ1Y3Rpb25zKCldO1xuXG4gICAgaWYgKHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLmRpc2FibGVkKSB7XG4gICAgICBvdXRwdXQucHVzaChjb2xvci55ZWxsb3codGhpcy53YXJuKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQuam9pbignICcpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAvLyBwcmludCBwcm9tcHRcbiAgICBsZXQgcHJvbXB0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKClcbiAgICBdLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5zaG93TWluRXJyb3IpIHtcbiAgICAgIHByb21wdCArPSBjb2xvci5yZWQoYFlvdSBtdXN0IHNlbGVjdCBhIG1pbmltdW0gb2YgJHt0aGlzLm1pblNlbGVjdGVkfSBjaG9pY2VzLmApO1xuICAgICAgdGhpcy5zaG93TWluRXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgcHJvbXB0ICs9IHRoaXMucmVuZGVyT3B0aW9ucyh0aGlzLnZhbHVlKTtcblxuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTXVsdGlzZWxlY3RQcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IHsgc3R5bGUsIGNsZWFyLCBmaWd1cmVzLCB3cmFwLCBlbnRyaWVzVG9EaXNwbGF5IH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbmNvbnN0IGdldFZhbCA9IChhcnIsIGkpID0+IGFycltpXSAmJiAoYXJyW2ldLnZhbHVlIHx8IGFycltpXS50aXRsZSB8fCBhcnJbaV0pO1xuY29uc3QgZ2V0VGl0bGUgPSAoYXJyLCBpKSA9PiBhcnJbaV0gJiYgKGFycltpXS50aXRsZSB8fCBhcnJbaV0udmFsdWUgfHwgYXJyW2ldKTtcbmNvbnN0IGdldEluZGV4ID0gKGFyciwgdmFsT3JUaXRsZSkgPT4ge1xuICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoZWwgPT4gZWwudmFsdWUgPT09IHZhbE9yVGl0bGUgfHwgZWwudGl0bGUgPT09IHZhbE9yVGl0bGUpO1xuICByZXR1cm4gaW5kZXggPiAtMSA/IGluZGV4IDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBUZXh0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgYXV0by1jb21wbGV0ZSBjaG9pY2VzIG9iamVjdHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnN1Z2dlc3RdIEZpbHRlciBmdW5jdGlvbi4gRGVmYXVsdHMgdG8gc29ydCBieSB0aXRsZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmxpbWl0PTEwXSBNYXggbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvd1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zdHlsZT0nZGVmYXVsdCddIFJlbmRlciBzdHlsZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZhbGxiYWNrXSBGYWxsYmFjayBtZXNzYWdlIC0gaW5pdGlhbCB0byBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gSW5kZXggb2YgdGhlIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuY2xlYXJGaXJzdF0gVGhlIGZpcnN0IEVTQ0FQRSBrZXlwcmVzcyB3aWxsIGNsZWFyIHRoZSBpbnB1dFxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9NYXRjaGVzXSBUaGUgbm8gbWF0Y2hlcyBmb3VuZCBsYWJlbFxuICovXG5jbGFzcyBBdXRvY29tcGxldGVQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5zdWdnZXN0ID0gb3B0cy5zdWdnZXN0O1xuICAgIHRoaXMuY2hvaWNlcyA9IG9wdHMuY2hvaWNlcztcbiAgICB0aGlzLmluaXRpYWwgPSB0eXBlb2Ygb3B0cy5pbml0aWFsID09PSAnbnVtYmVyJ1xuICAgICAgPyBvcHRzLmluaXRpYWxcbiAgICAgIDogZ2V0SW5kZXgob3B0cy5jaG9pY2VzLCBvcHRzLmluaXRpYWwpO1xuICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5pbml0aWFsIHx8IG9wdHMuY3Vyc29yIHx8IDA7XG4gICAgdGhpcy5pMThuID0geyBub01hdGNoZXM6IG9wdHMubm9NYXRjaGVzIHx8ICdubyBtYXRjaGVzIGZvdW5kJyB9O1xuICAgIHRoaXMuZmFsbGJhY2sgPSBvcHRzLmZhbGxiYWNrIHx8IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmNsZWFyRmlyc3QgPSBvcHRzLmNsZWFyRmlyc3QgfHwgZmFsc2U7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICB0aGlzLmxpbWl0ID0gb3B0cy5saW1pdCB8fCAxMDtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBzdHlsZS5yZW5kZXIob3B0cy5zdHlsZSk7XG4gICAgdGhpcy5zY2FsZSA9IHRoaXMudHJhbnNmb3JtLnNjYWxlO1xuICAgIHRoaXMucmVuZGVyID0gdGhpcy5yZW5kZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNvbXBsZXRlID0gdGhpcy5jb21wbGV0ZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5jb21wbGV0ZSh0aGlzLnJlbmRlcik7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBmYWxsYmFjayhmYikge1xuICAgIHRoaXMuX2ZiID0gTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQoZmIpKSA/IHBhcnNlSW50KGZiKSA6IGZiO1xuICB9XG5cbiAgZ2V0IGZhbGxiYWNrKCkge1xuICAgIGxldCBjaG9pY2U7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mYiA9PT0gJ251bWJlcicpXG4gICAgICBjaG9pY2UgPSB0aGlzLmNob2ljZXNbdGhpcy5fZmJdO1xuICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9mYiA9PT0gJ3N0cmluZycpXG4gICAgICBjaG9pY2UgPSB7IHRpdGxlOiB0aGlzLl9mYiB9O1xuICAgIHJldHVybiBjaG9pY2UgfHwgdGhpcy5fZmIgfHwgeyB0aXRsZTogdGhpcy5pMThuLm5vTWF0Y2hlcyB9O1xuICB9XG5cbiAgbW92ZVNlbGVjdChpKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBpO1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLnZhbHVlID0gZ2V0VmFsKHRoaXMuc3VnZ2VzdGlvbnMsIGkpO1xuICAgIGVsc2UgdGhpcy52YWx1ZSA9IHRoaXMuZmFsbGJhY2sudmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBhc3luYyBjb21wbGV0ZShjYikge1xuICAgIGNvbnN0IHAgPSAodGhpcy5jb21wbGV0aW5nID0gdGhpcy5zdWdnZXN0KHRoaXMuaW5wdXQsIHRoaXMuY2hvaWNlcykpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gYXdhaXQgcDtcblxuICAgIGlmICh0aGlzLmNvbXBsZXRpbmcgIT09IHApIHJldHVybjtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnNcbiAgICAgIC5tYXAoKHMsIGksIGFycikgPT4gKHsgdGl0bGU6IGdldFRpdGxlKGFyciwgaSksIHZhbHVlOiBnZXRWYWwoYXJyLCBpKSwgZGVzY3JpcHRpb246IHMuZGVzY3JpcHRpb24gfSkpO1xuICAgIHRoaXMuY29tcGxldGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IGwgPSBNYXRoLm1heChzdWdnZXN0aW9ucy5sZW5ndGggLSAxLCAwKTtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4obCwgdGhpcy5zZWxlY3QpKTtcblxuICAgIGNiICYmIGNiKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgdGhpcy5jb21wbGV0ZSgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5pbml0aWFsICE9PSB2b2lkIDAgPyB0aGlzLmluaXRpYWwgOiAwKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgaWYgKHRoaXMuY2xlYXJGaXJzdCAmJiB0aGlzLmlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb25lID0gdGhpcy5leGl0ZWQgPSB0cnVlOyBcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5leGl0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSB0aGlzLmV4aXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgbGV0IHMxID0gdGhpcy5pbnB1dC5zbGljZSgwLCB0aGlzLmN1cnNvcik7XG4gICAgbGV0IHMyID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmN1cnNvcik7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7Y30ke3MyfWA7XG4gICAgdGhpcy5jdXJzb3IgPSBzMS5sZW5ndGgrMTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3ItMSk7XG4gICAgbGV0IHMyID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmN1cnNvcik7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMuY3Vyc29yLTE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZUZvcndhcmQoKSB7XG4gICAgaWYodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMuaW5wdXQuc2xpY2UodGhpcy5jdXJzb3IrMSk7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZmlyc3QoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgLSAxKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ID09PSB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KHRoaXMuc2VsZWN0ICsgMSk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdCA9PT0gdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QoMCk7XG4gICAgfSBlbHNlIHRoaXMubW92ZVNlbGVjdCh0aGlzLnNlbGVjdCArIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4odGhpcy5zZWxlY3QgKyB0aGlzLmxpbWl0LCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KE1hdGgubWF4KHRoaXMuc2VsZWN0IC0gdGhpcy5saW1pdCwgMCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLmN1cnNvci0xO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IrMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKHYsIGhvdmVyZWQsIGlzU3RhcnQsIGlzRW5kKSB7XG4gICAgbGV0IGRlc2M7XG4gICAgbGV0IHByZWZpeCA9IGlzU3RhcnQgPyBmaWd1cmVzLmFycm93VXAgOiBpc0VuZCA/IGZpZ3VyZXMuYXJyb3dEb3duIDogJyAnO1xuICAgIGxldCB0aXRsZSA9IGhvdmVyZWQgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICBwcmVmaXggPSAoaG92ZXJlZCA/IGNvbG9yLmN5YW4oZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgIGlmICh2LmRlc2NyaXB0aW9uKSB7XG4gICAgICBkZXNjID0gYCAtICR7di5kZXNjcmlwdGlvbn1gO1xuICAgICAgaWYgKHByZWZpeC5sZW5ndGggKyB0aXRsZS5sZW5ndGggKyBkZXNjLmxlbmd0aCA+PSB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgIGRlc2MgPSAnXFxuJyArIHdyYXAodi5kZXNjcmlwdGlvbiwgeyBtYXJnaW46IDMsIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zIH0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXggKyAnICcgKyB0aXRsZSArIGNvbG9yLmdyYXkoZGVzYyB8fCAnJyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5zZWxlY3QsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMubGltaXQpO1xuXG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkLCB0aGlzLmV4aXRlZCksXG4gICAgICBjb2xvci5ib2xkKHRoaXMubXNnKSxcbiAgICAgIHN0eWxlLmRlbGltaXRlcih0aGlzLmNvbXBsZXRpbmcpLFxuICAgICAgdGhpcy5kb25lICYmIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zZWxlY3RdXG4gICAgICAgID8gdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdF0udGl0bGVcbiAgICAgICAgOiB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5wdXQpXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICBpZiAoIXRoaXMuZG9uZSkge1xuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLnN1Z2dlc3Rpb25zXG4gICAgICAgIC5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcbiAgICAgICAgLm1hcCgoaXRlbSwgaSkgPT4gIHRoaXMucmVuZGVyT3B0aW9uKGl0ZW0sXG4gICAgICAgICAgdGhpcy5zZWxlY3QgPT09IGkgKyBzdGFydEluZGV4LFxuICAgICAgICAgIGkgPT09IDAgJiYgc3RhcnRJbmRleCA+IDAsXG4gICAgICAgICAgaSArIHN0YXJ0SW5kZXggPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpKVxuICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICB0aGlzLm91dHB1dFRleHQgKz0gYFxcbmAgKyAoc3VnZ2VzdGlvbnMgfHwgY29sb3IuZ3JheSh0aGlzLmZhbGxiYWNrLnRpdGxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvY29tcGxldGVQcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IHsgY3Vyc29yIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5jb25zdCBNdWx0aXNlbGVjdFByb21wdCA9IHJlcXVpcmUoJy4vbXVsdGlzZWxlY3QnKTtcbmNvbnN0IHsgY2xlYXIsIHN0eWxlLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICovXG5jbGFzcyBBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdCBleHRlbmRzIE11bHRpc2VsZWN0UHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIG9wdHMub3ZlcnJpZGVSZW5kZXIgPSB0cnVlO1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG4gIG5leHQoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSAodGhpcy5jdXJzb3IgKyAxKSAlIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSAwKSB7XG4gICAgICB0aGlzLmN1cnNvciA9IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yLS07XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvcisrO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cigwLCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpIHtcbiAgICBjb25zdCBjdXJyZW50SGlnaGxpZ2h0ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy52YWx1ZVxuICAgICAgLmZpbHRlcih2ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygdi50aXRsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHYudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodi52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgY29uc3QgbmV3SGlnaGxpZ2h0SW5kZXggPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kSW5kZXgodiA9PiB2ID09PSBjdXJyZW50SGlnaGxpZ2h0KVxuICAgIHRoaXMuY3Vyc29yID0gbmV3SGlnaGxpZ2h0SW5kZXggPCAwID8gMCA6IG5ld0hpZ2hsaWdodEluZGV4O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBoYW5kbGVTcGFjZVRvZ2dsZSgpIHtcbiAgICBjb25zdCB2ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuXG4gICAgaWYgKHYuc2VsZWN0ZWQpIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIGlmICh2LmRpc2FibGVkIHx8IHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2UoYykge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXRWYWx1ZSArIGM7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy5oYW5kbGVTcGFjZVRvZ2dsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pbnN0cnVjdGlvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmluc3RydWN0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RydWN0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdHJ1Y3Rpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBcbkluc3RydWN0aW9uczpcbiAgICAke2ZpZ3VyZXMuYXJyb3dVcH0vJHtmaWd1cmVzLmFycm93RG93bn06IEhpZ2hsaWdodCBvcHRpb25cbiAgICAke2ZpZ3VyZXMuYXJyb3dMZWZ0fS8ke2ZpZ3VyZXMuYXJyb3dSaWdodH0vW3NwYWNlXTogVG9nZ2xlIHNlbGVjdGlvblxuICAgIFthLGIsY10vZGVsZXRlOiBGaWx0ZXIgY2hvaWNlc1xuICAgIGVudGVyL3JldHVybjogQ29tcGxldGUgYW5zd2VyXG5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJDdXJyZW50SW5wdXQoKSB7XG4gICAgcmV0dXJuIGBcbkZpbHRlcmVkIHJlc3VsdHMgZm9yOiAke3RoaXMuaW5wdXRWYWx1ZSA/IHRoaXMuaW5wdXRWYWx1ZSA6IGNvbG9yLmdyYXkoJ0VudGVyIHNvbWV0aGluZyB0byBmaWx0ZXInKX1cXG5gO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKGN1cnNvciwgdiwgaSkge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAodi5kaXNhYmxlZCkgdGl0bGUgPSBjdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgZWxzZSB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgIHJldHVybiAodi5zZWxlY3RlZCA/IGNvbG9yLmdyZWVuKGZpZ3VyZXMucmFkaW9PbikgOiBmaWd1cmVzLnJhZGlvT2ZmKSArICcgICcgKyB0aXRsZVxuICB9XG5cbiAgcmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKVxuICAgICAgICAubWFwKHYgPT4gdi50aXRsZSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gW2NvbG9yLmdyYXkodGhpcy5oaW50KSwgdGhpcy5yZW5kZXJJbnN0cnVjdGlvbnMoKSwgdGhpcy5yZW5kZXJDdXJyZW50SW5wdXQoKV07XG5cbiAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgb3V0cHV0LnB1c2goY29sb3IueWVsbG93KHRoaXMud2FybikpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgLy8gcHJpbnQgcHJvbXB0XG5cbiAgICBsZXQgcHJvbXB0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKClcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIGlmICh0aGlzLnNob3dNaW5FcnJvcikge1xuICAgICAgcHJvbXB0ICs9IGNvbG9yLnJlZChgWW91IG11c3Qgc2VsZWN0IGEgbWluaW11bSBvZiAke3RoaXMubWluU2VsZWN0ZWR9IGNob2ljZXMuYCk7XG4gICAgICB0aGlzLnNob3dNaW5FcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgICBwcm9tcHQgKz0gdGhpcy5yZW5kZXJPcHRpb25zKHRoaXMuZmlsdGVyZWRPcHRpb25zKTtcblxuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ7XG4iLCJjb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuY29uc3QgeyBzdHlsZSwgY2xlYXIgfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcbmNvbnN0IHsgZXJhc2UsIGN1cnNvciB9ID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpO1xuXG4vKipcbiAqIENvbmZpcm1Qcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZSAodHJ1ZS9mYWxzZSlcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnllc10gVGhlIFwiWWVzXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy55ZXNPcHRpb25dIFRoZSBcIlllc1wiIG9wdGlvbiB3aGVuIGNob29zaW5nIGJldHdlZW4geWVzL25vXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9dIFRoZSBcIk5vXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ub09wdGlvbl0gVGhlIFwiTm9cIiBvcHRpb24gd2hlbiBjaG9vc2luZyBiZXR3ZWVuIHllcy9ub1xuICovXG5jbGFzcyBDb25maXJtUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSBvcHRzLmluaXRpYWw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLnllc01zZyA9IG9wdHMueWVzIHx8ICd5ZXMnO1xuICAgIHRoaXMueWVzT3B0aW9uID0gb3B0cy55ZXNPcHRpb24gfHwgJyhZL24pJztcbiAgICB0aGlzLm5vTXNnID0gb3B0cy5ubyB8fCAnbm8nO1xuICAgIHRoaXMubm9PcHRpb24gPSBvcHRzLm5vT3B0aW9uIHx8ICcoeS9OKSc7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cbiAgICBpZiAoYy50b0xvd2VyQ2FzZSgpID09PSAnbicpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksXG4gICAgICB0aGlzLmRvbmUgPyAodGhpcy52YWx1ZSA/IHRoaXMueWVzTXNnIDogdGhpcy5ub01zZylcbiAgICAgICAgICA6IGNvbG9yLmdyYXkodGhpcy5pbml0aWFsVmFsdWUgPyB0aGlzLnllc09wdGlvbiA6IHRoaXMubm9PcHRpb24pXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbmZpcm1Qcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0UHJvbXB0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgU2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL3NlbGVjdCcpLFxuICBUb2dnbGVQcm9tcHQ6IHJlcXVpcmUoJy4vdG9nZ2xlJyksXG4gIERhdGVQcm9tcHQ6IHJlcXVpcmUoJy4vZGF0ZScpLFxuICBOdW1iZXJQcm9tcHQ6IHJlcXVpcmUoJy4vbnVtYmVyJyksXG4gIE11bHRpc2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL211bHRpc2VsZWN0JyksXG4gIEF1dG9jb21wbGV0ZVByb21wdDogcmVxdWlyZSgnLi9hdXRvY29tcGxldGUnKSxcbiAgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ6IHJlcXVpcmUoJy4vYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QnKSxcbiAgQ29uZmlybVByb21wdDogcmVxdWlyZSgnLi9jb25maXJtJylcbn07XG4iLCIndXNlIHN0cmljdCc7XG5jb25zdCAkID0gZXhwb3J0cztcbmNvbnN0IGVsID0gcmVxdWlyZSgnLi9lbGVtZW50cycpO1xuY29uc3Qgbm9vcCA9IHYgPT4gdjtcblxuZnVuY3Rpb24gdG9Qcm9tcHQodHlwZSwgYXJncywgb3B0cz17fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3QgcCA9IG5ldyBlbFt0eXBlXShhcmdzKTtcbiAgICBjb25zdCBvbkFib3J0ID0gb3B0cy5vbkFib3J0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25TdWJtaXQgPSBvcHRzLm9uU3VibWl0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25FeGl0ID0gb3B0cy5vbkV4aXQgfHwgbm9vcDtcbiAgICBwLm9uKCdzdGF0ZScsIGFyZ3Mub25TdGF0ZSB8fCBub29wKTtcbiAgICBwLm9uKCdzdWJtaXQnLCB4ID0+IHJlcyhvblN1Ym1pdCh4KSkpO1xuICAgIHAub24oJ2V4aXQnLCB4ID0+IHJlcyhvbkV4aXQoeCkpKTtcbiAgICBwLm9uKCdhYm9ydCcsIHggPT4gcmVqKG9uQWJvcnQoeCkpKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGV4dCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQudGV4dCA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ1RleHRQcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBQYXNzd29yZCBwcm9tcHQgd2l0aCBtYXNrZWQgaW5wdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLnBhc3N3b3JkID0gYXJncyA9PiB7XG4gIGFyZ3Muc3R5bGUgPSAncGFzc3dvcmQnO1xuICByZXR1cm4gJC50ZXh0KGFyZ3MpO1xufTtcblxuLyoqXG4gKiBQcm9tcHQgd2hlcmUgaW5wdXQgaXMgaW52aXNpYmxlLCBsaWtlIHN1ZG9cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLmludmlzaWJsZSA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ2ludmlzaWJsZSc7XG4gIHJldHVybiAkLnRleHQoYXJncyk7XG59O1xuXG4vKipcbiAqIE51bWJlciBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQubnVtYmVyID0gYXJncyA9PiB0b1Byb21wdCgnTnVtYmVyUHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogRGF0ZSBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuZGF0ZSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0RhdGVQcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBDbGFzc2ljIHllcy9ubyBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuY29uZmlybSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0NvbmZpcm1Qcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBMaXN0IHByb21wdCwgc3BsaXQgaW50cHV0IHN0cmluZyBieSBgc2VwZXJhdG9yYFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaW5pdGlhbF0gRGVmYXVsdCBzdHJpbmcgdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnNlcGFyYXRvcl0gU3RyaW5nIHNlcGFyYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dCwgaW4gZm9ybSBvZiBhbiBgQXJyYXlgXG4gKi9cbiQubGlzdCA9IGFyZ3MgPT4ge1xuICBjb25zdCBzZXAgPSBhcmdzLnNlcGFyYXRvciB8fCAnLCc7XG4gIHJldHVybiB0b1Byb21wdCgnVGV4dFByb21wdCcsIGFyZ3MsIHtcbiAgICBvblN1Ym1pdDogc3RyID0+IHN0ci5zcGxpdChzZXApLm1hcChzID0+IHMudHJpbSgpKVxuICB9KTtcbn07XG5cbi8qKlxuICogVG9nZ2xlL3N3aXRjaCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuYWN0aXZlPVwib25cIl0gVGV4dCBmb3IgYGFjdGl2ZWAgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbmFjdGl2ZT1cIm9mZlwiXSBUZXh0IGZvciBgaW5hY3RpdmVgIHN0YXRlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQudG9nZ2xlID0gYXJncyA9PiB0b1Byb21wdCgnVG9nZ2xlUHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogSW50ZXJhY3RpdmUgc2VsZWN0IHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlcyBvYmplY3RzIGBbeyB0aXRsZSwgdmFsdWUgfSwgLi4uXWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5pbml0aWFsXSBJbmRleCBvZiBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2FyZ3MuaGludF0gSGludCB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuc2VsZWN0ID0gYXJncyA9PiB0b1Byb21wdCgnU2VsZWN0UHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogSW50ZXJhY3RpdmUgbXVsdGktc2VsZWN0IC8gYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSwgW3NlbGVjdGVkXSB9LCAuLi5dYFxuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heF0gTWF4IHNlbGVjdFxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmhpbnRdIEhpbnQgdG8gZGlzcGxheSB1c2VyXG4gKiBAcGFyYW0ge051bWJlcn0gW2FyZ3MuY3Vyc29yPTBdIEN1cnNvciBzdGFydCBwb3NpdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLm11bHRpc2VsZWN0ID0gYXJncyA9PiB7XG4gIGFyZ3MuY2hvaWNlcyA9IFtdLmNvbmNhdChhcmdzLmNob2ljZXMgfHwgW10pO1xuICBjb25zdCB0b1NlbGVjdGVkID0gaXRlbXMgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gIHJldHVybiB0b1Byb21wdCgnTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbiQuYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG4gIGNvbnN0IHRvU2VsZWN0ZWQgPSBpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdCcsIGFyZ3MsIHtcbiAgICBvbkFib3J0OiB0b1NlbGVjdGVkLFxuICAgIG9uU3VibWl0OiB0b1NlbGVjdGVkXG4gIH0pO1xufTtcblxuY29uc3QgYnlUaXRsZSA9IChpbnB1dCwgY2hvaWNlcykgPT4gUHJvbWlzZS5yZXNvbHZlKFxuICBjaG9pY2VzLmZpbHRlcihpdGVtID0+IGl0ZW0udGl0bGUuc2xpY2UoMCwgaW5wdXQubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpKVxuKTtcblxuLyoqXG4gKiBJbnRlcmFjdGl2ZSBhdXRvLWNvbXBsZXRlIHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgYXV0by1jb21wbGV0ZSBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSB9LCAuLi5dYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2FyZ3Muc3VnZ2VzdF0gRnVuY3Rpb24gdG8gZmlsdGVyIHJlc3VsdHMgYmFzZWQgb24gdXNlciBpbnB1dC4gRGVmYXVsdHMgdG8gc29ydCBieSBgdGl0bGVgXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubGltaXQ9MTBdIE1heCBudW1iZXIgb2YgcmVzdWx0cyB0byBzaG93XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5pbml0aWFsXSBJbmRleCBvZiB0aGUgZGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5jbGVhckZpcnN0XSBUaGUgZmlyc3QgRVNDQVBFIGtleXByZXNzIHdpbGwgY2xlYXIgdGhlIGlucHV0XG4gKiBAcGFyYW0ge1N0cmluZ30gW2FyZ3MuZmFsbGJhY2tdIEZhbGxiYWNrIG1lc3NhZ2UgLSBkZWZhdWx0cyB0byBpbml0aWFsIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuYXV0b2NvbXBsZXRlID0gYXJncyA9PiB7XG4gIGFyZ3Muc3VnZ2VzdCA9IGFyZ3Muc3VnZ2VzdCB8fCBieVRpdGxlO1xuICBhcmdzLmNob2ljZXMgPSBbXS5jb25jYXQoYXJncy5jaG9pY2VzIHx8IFtdKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVQcm9tcHQnLCBhcmdzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHByb21wdHMgPSByZXF1aXJlKCcuL3Byb21wdHMnKTtcblxuY29uc3QgcGFzc09uID0gWydzdWdnZXN0JywgJ2Zvcm1hdCcsICdvblN0YXRlJywgJ3ZhbGlkYXRlJywgJ29uUmVuZGVyJywgJ3R5cGUnXTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG4gKiBQcm9tcHQgZm9yIGEgc2VyaWVzIG9mIHF1ZXN0aW9uc1xuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IHF1ZXN0aW9ucyBTaW5nbGUgcXVlc3Rpb24gb2JqZWN0IG9yIEFycmF5IG9mIHF1ZXN0aW9uIG9iamVjdHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Ym1pdF0gQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIG9uIHByb21wdCBzdWJtaXRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkNhbmNlbF0gQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIG9uIGNhbmNlbC9hYm9ydFxuICogQHJldHVybnMge09iamVjdH0gT2JqZWN0IHdpdGggdmFsdWVzIGZyb20gdXNlciBpbnB1dFxuICovXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb25zPVtdLCB7IG9uU3VibWl0PW5vb3AsIG9uQ2FuY2VsPW5vb3AgfT17fSkge1xuICBjb25zdCBhbnN3ZXJzID0ge307XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvbXB0Ll9vdmVycmlkZSB8fCB7fTtcbiAgcXVlc3Rpb25zID0gW10uY29uY2F0KHF1ZXN0aW9ucyk7XG4gIGxldCBhbnN3ZXIsIHF1ZXN0aW9uLCBxdWl0LCBuYW1lLCB0eXBlLCBsYXN0UHJvbXB0O1xuXG4gIGNvbnN0IGdldEZvcm1hdHRlZEFuc3dlciA9IGFzeW5jIChxdWVzdGlvbiwgYW5zd2VyLCBza2lwVmFsaWRhdGlvbiA9IGZhbHNlKSA9PiB7XG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbiAmJiBxdWVzdGlvbi52YWxpZGF0ZSAmJiBxdWVzdGlvbi52YWxpZGF0ZShhbnN3ZXIpICE9PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbi5mb3JtYXQgPyBhd2FpdCBxdWVzdGlvbi5mb3JtYXQoYW5zd2VyLCBhbnN3ZXJzKSA6IGFuc3dlclxuICB9O1xuXG4gIGZvciAocXVlc3Rpb24gb2YgcXVlc3Rpb25zKSB7XG4gICAgKHsgbmFtZSwgdHlwZSB9ID0gcXVlc3Rpb24pO1xuXG4gICAgLy8gZXZhbHVhdGUgdHlwZSBmaXJzdCBhbmQgc2tpcCBpZiB0eXBlIGlzIGEgZmFsc3kgdmFsdWVcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHR5cGUgPSBhd2FpdCB0eXBlKGFuc3dlciwgeyAuLi5hbnN3ZXJzIH0sIHF1ZXN0aW9uKVxuICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHR5cGVcbiAgICB9XG4gICAgaWYgKCF0eXBlKSBjb250aW51ZTtcblxuICAgIC8vIGlmIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCB1bmxlc3MgaXQncyBhIHNwZWNpYWwgZnVuY3Rpb25cbiAgICBmb3IgKGxldCBrZXkgaW4gcXVlc3Rpb24pIHtcbiAgICAgIGlmIChwYXNzT24uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBsZXQgdmFsdWUgPSBxdWVzdGlvbltrZXldO1xuICAgICAgcXVlc3Rpb25ba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHZhbHVlKGFuc3dlciwgeyAuLi5hbnN3ZXJzIH0sIGxhc3RQcm9tcHQpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgbGFzdFByb21wdCA9IHF1ZXN0aW9uO1xuXG4gICAgaWYgKHR5cGVvZiBxdWVzdGlvbi5tZXNzYWdlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9tcHQgbWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB2YXJzIGluIGNhc2UgdGhleSBjaGFuZ2VkXG4gICAgKHsgbmFtZSwgdHlwZSB9ID0gcXVlc3Rpb24pO1xuXG4gICAgaWYgKHByb21wdHNbdHlwZV0gPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9tcHQgdHlwZSAoJHt0eXBlfSkgaXMgbm90IGRlZmluZWRgKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW5zd2VyID0gYXdhaXQgZ2V0Rm9ybWF0dGVkQW5zd2VyKHF1ZXN0aW9uLCBvdmVycmlkZVtxdWVzdGlvbi5uYW1lXSk7XG4gICAgICBpZiAoYW5zd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCB0aGUgaW5qZWN0ZWQgYW5zd2VyIGlmIHRoZXJlIGlzIG9uZSBvciBwcm9tcHQgdGhlIHVzZXJcbiAgICAgIGFuc3dlciA9IHByb21wdC5faW5qZWN0ZWQgPyBnZXRJbmplY3RlZEFuc3dlcihwcm9tcHQuX2luamVjdGVkLCBxdWVzdGlvbi5pbml0aWFsKSA6IGF3YWl0IHByb21wdHNbdHlwZV0ocXVlc3Rpb24pO1xuICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlciA9IGF3YWl0IGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgYW5zd2VyLCB0cnVlKTtcbiAgICAgIHF1aXQgPSBhd2FpdCBvblN1Ym1pdChxdWVzdGlvbiwgYW5zd2VyLCBhbnN3ZXJzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHF1aXQgPSAhKGF3YWl0IG9uQ2FuY2VsKHF1ZXN0aW9uLCBhbnN3ZXJzKSk7XG4gICAgfVxuXG4gICAgaWYgKHF1aXQpIHJldHVybiBhbnN3ZXJzO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlcnM7XG59XG5cbmZ1bmN0aW9uIGdldEluamVjdGVkQW5zd2VyKGluamVjdGVkLCBkZWFmdWx0VmFsdWUpIHtcbiAgY29uc3QgYW5zd2VyID0gaW5qZWN0ZWQuc2hpZnQoKTtcbiAgICBpZiAoYW5zd2VyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IGFuc3dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gKGFuc3dlciA9PT0gdW5kZWZpbmVkKSA/IGRlYWZ1bHRWYWx1ZSA6IGFuc3dlcjtcbn1cblxuZnVuY3Rpb24gaW5qZWN0KGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9pbmplY3RlZCA9IChwcm9tcHQuX2luamVjdGVkIHx8IFtdKS5jb25jYXQoYW5zd2Vycyk7XG59XG5cbmZ1bmN0aW9uIG92ZXJyaWRlKGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9vdmVycmlkZSA9IE9iamVjdC5hc3NpZ24oe30sIGFuc3dlcnMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24ocHJvbXB0LCB7IHByb21wdCwgcHJvbXB0cywgaW5qZWN0LCBvdmVycmlkZSB9KTtcbiIsImZ1bmN0aW9uIGlzTm9kZUxUKHRhcikge1xuICB0YXIgPSAoQXJyYXkuaXNBcnJheSh0YXIpID8gdGFyIDogdGFyLnNwbGl0KCcuJykpLm1hcChOdW1iZXIpO1xuICBsZXQgaT0wLCBzcmM9cHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gIGZvciAoOyBpIDwgdGFyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNyY1tpXSA+IHRhcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0YXJbaV0gPiBzcmNbaV0pIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPVxuICBpc05vZGVMVCgnOC42LjAnKVxuICAgID8gcmVxdWlyZSgnLi9kaXN0L2luZGV4LmpzJylcbiAgICA6IHJlcXVpcmUoJy4vbGliL2luZGV4LmpzJyk7XG4iXSwibmFtZXMiOlsiYWN0aW9uIiwic3RyaXAiLCJiZWVwIiwiY3Vyc29yIiwiZXJhc2UiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwicmVxdWlyZSQkMCIsIl9yZXF1aXJlIiwicmVxdWlyZSQkMSIsIndpZHRoIiwiY2xlYXIiLCJtYWluIiwid2luIiwiZmlndXJlcyIsImZpZ3VyZXNfMSIsImMiLCJzdHlsZXMiLCJyZW5kZXIiLCJzeW1ib2xzIiwic3ltYm9sIiwiZGVsaW1pdGVyIiwiaXRlbSIsInN0eWxlIiwibGluZXMiLCJ3cmFwIiwiZW50cmllc1RvRGlzcGxheSIsInV0aWwiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJyZXF1aXJlJCQ1IiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJyZWFkbGluZSIsIkV2ZW50RW1pdHRlciIsIl9yZXF1aXJlMiIsImNvbG9yIiwiUHJvbXB0IiwicHJvbXB0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJUZXh0UHJvbXB0IiwidGV4dCIsIlNlbGVjdFByb21wdCIsInNlbGVjdCIsIlRvZ2dsZVByb21wdCIsInRvZ2dsZSIsIkRhdGVQYXJ0IiwiZGF0ZXBhcnQiLCJNZXJpZGllbSIsIm1lcmlkaWVtIiwicG9zIiwiRGF5IiwiZGF5IiwiSG91cnMiLCJob3VycyIsIk1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsIk1pbnV0ZXMiLCJtaW51dGVzIiwiTW9udGgiLCJtb250aCIsIlNlY29uZHMiLCJzZWNvbmRzIiwiWWVhciIsInllYXIiLCJkYXRlcGFydHMiLCJyZXF1aXJlJCQ4IiwicmVnZXgiLCJyZWdleEdyb3VwcyIsImRmbHRMb2NhbGVzIiwiRGF0ZVByb21wdCIsImRhdGUiLCJpc051bWJlciIsImlzRGVmIiwicm91bmQiLCJOdW1iZXJQcm9tcHQiLCJudW1iZXIiLCJNdWx0aXNlbGVjdFByb21wdCIsIm11bHRpc2VsZWN0IiwiZ2V0VmFsIiwiZ2V0VGl0bGUiLCJnZXRJbmRleCIsIkF1dG9jb21wbGV0ZVByb21wdCIsImF1dG9jb21wbGV0ZSIsIkF1dG9jb21wbGV0ZU11bHRpc2VsZWN0UHJvbXB0IiwiYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QiLCJDb25maXJtUHJvbXB0IiwiY29uZmlybSIsImVsZW1lbnRzIiwicHJvbXB0cyIsInBhc3NPbiIsIm5vb3AiLCJnZXRJbmplY3RlZEFuc3dlciIsImluamVjdCIsIm92ZXJyaWRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLE1BQU0sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUMvRDtBQUNBLE1BQU0sQ0FBQyxHQUFHO0FBQ1YsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLFdBQVcsS0FBSyxHQUFHO0FBQ3hFO0FBQ0E7QUFDQSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNyQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQjtBQUNBO0FBQ0EsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDckIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkI7QUFDQTtBQUNBLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN2QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzlCLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkIsRUFBRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxHQUFHO0FBQ0gsRUFBRTtBQUNGLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN4QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzFCLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDekI7QUFDQSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9DO0FBQ0EsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFD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QUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1QyxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2xELEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDbEQsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBQztBQUNEO0FBQ0EsTUFBTSxNQUFNLEdBQUc7QUFDZixFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzVDLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDOUMsRUFBQztBQUNEO0FBQ0EsTUFBTUMsT0FBSyxHQUFHO0FBQ2QsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDcEIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM3QyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzlDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2xCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNmLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFDbEMsTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBR0QsUUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlELElBQUksSUFBSSxLQUFLO0FBQ2IsTUFBTSxLQUFLLElBQUlBLFFBQU0sQ0FBQyxJQUFJLENBQUM7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0gsRUFBQztBQUNEO0lBQ0EsR0FBYyxHQUFHLFVBQUVBLFFBQU0sRUFBRSxNQUFNLFNBQUVDLE9BQUssUUFBRUYsTUFBSSxFQUFFOztBQ3ZEaEQsU0FBU0csNEJBQTBCLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHQyw2QkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsdUlBQXVJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDdCtCO0FBQ0EsU0FBU0EsNkJBQTJCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLE9BQU9DLG1CQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksMENBQTBDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9B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QUFDLElBQUksRUFBRSxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUc7QUFDWCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPO0FBQzVCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDcEMsUUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUNTLE9BQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNwSCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQ1ksT0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRWMsT0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUVkLE9BQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBR2MsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUVBLE9BQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBR0EsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvUSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDbEMsT0FBSyxDQUFDLElBQUksR0FBR0QsUUFB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SSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdEMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUM1QjtBQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDM0IsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUN2QyxRQUFNLENBQUMsSUFBSSxDQUFDc0IsT0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBR2IsT0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVB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QUFNLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUc7QUFDWCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxhQUFhLEdBQUc7QUFD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QUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLO0FBQ25DLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsSUFBSSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztBQUN6QyxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0FBQzNDLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDdkMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUksUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSTtBQUNyQixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0FBQzFCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJO0FBQ3RCLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7QUFDM0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksUUFBUSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLElBQUk7QUFDakIsRUFBRSxNQUFNLEdBQUcsR0FBRyxJ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QyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLDJCQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyx1SUFBdUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixHQUFHLElBQUksRUFBRSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUN0K0I7QUFDQSxTQUFTLDJCQUEyQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxPQUFPLGlCQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksMENBQTBDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUU7QUFDaGE7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtBQUNuTDtBQUNBLFNBQVMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDelE7QUFDQSxTQUFTLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sWUFBWSxFQUFFLElBQUksSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFD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QUFDLENBQUM7QUFDaEMsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQztBQUMzQixHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ1osSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkQsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFO0FBQ2hDLE1BQU0sSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFDO0FBQzNCLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBQzFCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLGFBQWEsR0FBRztBQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUYsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO0FBQzlCLE1BQU0sSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDNUIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFD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SSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtBQUMxQixNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25ELElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzNCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BDLElBQUksSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDcEQsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDNUIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNaLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0M7QUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RDO0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JELElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO0FBQzNCLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVztBQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDbkMsUUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHUyxPQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDL0gsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ0EsT0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQy9ELEtBQUs7QUFDTCxJQUFJLEtBQUss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QU0sS0FBSyxDQUFDLEVBQUU7QUFDM0IsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUMxQyxLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDL0MsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN0QixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6RixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7QUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxpQkFB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QUU7QUFDWixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9CLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsYUFBYSxHQUFHO0FBQ2xCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUUsSUFBSSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMzQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkQsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDckQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLEtBQUssTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLEdBQUc7QUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0UsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtBQUMzQyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2IsSUFBSSxJQUFJLE1BQU0sR0FBRyxPQUFPLEdBQUdHLFNBQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxHQUFHQSxTQUFPLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztBQUM3RSxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sR0FBR3VCLE9BQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDcEUsSUFBSSxNQUFNLEdBQUcsQ0FBQyxPQUFPLEdBQUdBLE9BQUssQ0FBQyxJQUFJLENBQUN2QixTQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksSUFBSSxNQUFNLENBQUM7QUFDM0UsSUFBSSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7QUFDdkIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDbkMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTztBQUN4RSxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDcEQsUUFBUSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBQztBQUNqRixPQUFPO0FBQ1AsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBR3VCLE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTztBQUM1QixJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ25DLFFBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RCxTQUFTLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDUyxPQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbkI7QUFDQSxJQUFJLElBQUksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEc7QUFDQSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUc7QUFDdEIsTUFBTVksT0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUN4RCxNQUFNYyxPQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDMUIsTUFBTWQsT0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3RDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDaEQsVUFBVSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLO0FBQzdDLFVBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLE1BQU0sTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVc7QUFDMUMsU0FBUyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQztBQUNwQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJO0FBQ2pELFVBQVUsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsVUFBVTtBQUN4QyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUM7QUFDbkMsVUFBVSxDQUFDLEdBQUcsVUFBVSxLQUFLLFFBQVEsR0FBRyxDQUFDLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0UsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEIsTUFBTSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxJQUFJYyxPQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRixLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDbEMsT0FBSyxDQUFDLElBQUksR0FBR0QsUUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEUsR0FBRztBQUNILENBQUM7QUFDRDtJQUNBLFlBQWMsR0FBRyxrQkFBa0I7O0FDclFuQyxNQUFNbUMsT0FBSyxHQUFHOUIsS0FBZ0IsQ0FBQztBQUMvQixNQUFNLFVBQUVMLFFBQU0sRUFBRSxHQUFHTyxHQUFxQixDQUFDO0FBQ3pDLE1BQU0saUJBQWlCLEdBQUdtQixXQUF3QixDQUFDO0FBQ25ELE1BQU0sU0FBRWpCLE9BQUssU0FBRVksT0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHTSxJQUFrQixDQUFDO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sNkJBQTZCLFNBQVMsaUJBQWlCLENBQUM7QUFDOUQsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN2QixJQUFJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO0FBQy9CLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHbEIsT0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0gsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztBQUNsRSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMzQixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BELEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN6RCxNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUN2RCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pGLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN0RCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtBQUNoQyxNQUFNLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzlFLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDbkMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUscUJBQXFCLEdBQUc7QUFDMUIsSUFBSSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9ELElBQUksSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSztBQUNyQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLElBQUk7QUFDbkIsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7QUFDN0IsVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0MsWUFBWSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtBQUMvRSxjQUFjLE9BQU8sSUFBSSxDQUFDO0FBQzFCLGFBQWE7QUFDYixXQUFXO0FBQ1gsVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7QUFDM0MsWUFBWSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtBQUMvRSxjQUFjLE9BQU8sSUFBSSxDQUFDO0FBQzFCLGFBQWE7QUFDYixXQUFXO0FBQ1gsVUFBVSxPQUFPLEtBQUssQ0FBQztBQUN2QixTQUFTO0FBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixPQUFPLENBQUMsQ0FBQztBQUNULElBQUksTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLGdCQUFnQixFQUFDO0FBQ3pGLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQ2hFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsaUJBQWlCLEdBQUc7QUFDdEIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRDtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0FBQ3BCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDekIsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzNGLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN4QixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLEVBQUU7QUFDdkIsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7QUFDakMsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNaLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ25CLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDL0IsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBLEVBQUUsa0JBQWtCLEdBQUc7QUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDOUQsTUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7QUFDakQsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDakMsT0FBTztBQUNQLE1BQU0sT0FBTyxDQUFDO0FBQ2Q7QUFDQSxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUMzQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUM5QztBQUNBO0FBQ0EsQ0FBQyxDQUFDO0FBQ0YsS0FBSztBQUNMLElBQUksT0FBTyxFQUFFLENBQUM7QUFDZCxHQUFHO0FBQ0g7QUFDQSxFQUFFLGtCQUFrQixHQUFHO0FBQ3ZCLElBQUksT0FBTyxDQUFDO0FBQ1osc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHMEIsT0FBSyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hHLEdBQUc7QUFDSDtBQUNBLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzdCLElBQUksSUFBSSxLQUFLLENBQUM7QUFDZCxJQUFJLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBR0EsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUdBLE9BQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pILFNBQVMsS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUdBLE9BQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDMUUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBR0EsT0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJLEdBQUcsS0FBSztBQUN4RixHQUFHO0FBQ0g7QUFDQSxFQUFFLHdCQUF3QixHQUFHO0FBQzdCLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ25CLE1BQU0sT0FBTyxJQUFJLENBQUMsS0FBSztBQUN2QixTQUFTLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUNoQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUMxQixTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLENBQUNBLE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7QUFDakc7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFO0FBQ25GLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQ0EsT0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDNUIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUc7QUFDWCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPO0FBQzVCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDbkMsUUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RELElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLElBQUksSUFBSSxNQUFNLEdBQUc7QUFDakIsTUFBTXFCLE9BQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzNDLE1BQU1jLE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMxQixNQUFNZCxPQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztBQUM1QixNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtBQUNyQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7QUFDM0IsTUFBTSxNQUFNLElBQUljLE9BQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDdkYsTUFBTSxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUNoQyxLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDdkQ7QUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHMUIsT0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7SUFDQSx1QkFBYyxHQUFHLDZCQUE2Qjs7QUNqTTlDLE1BQU0sS0FBSyxHQUFHSixLQUFnQixDQUFDO0FBQy9CLE1BQU0sTUFBTSxHQUFHRSxRQUFtQixDQUFDO0FBQ25DLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUdtQixJQUFrQixDQUFDO0FBQzVDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUdDLEdBQXFCLENBQUM7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGFBQWEsU0FBUyxNQUFNLENBQUM7QUFDbkMsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN2QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM1QixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDO0FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztBQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHO0FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO0FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7QUFDWixJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLEdBQUcsRUFBRTtBQUNqQyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLE1BQU0sT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxFQUFFO0FBQ2pDLE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDekIsTUFBTSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU87QUFDNUIsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RELFNBQVMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHO0FBQ3RCLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDM0MsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDMUIsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDaEMsTUFBTSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSztBQUN4RCxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7QUFDMUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoQjtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRSxHQUFHO0FBQ0gsQ0FBQztBQUNEO0lBQ0EsT0FBYyxHQUFHLGFBQWE7O0lDdEY5QixRQUFjLEdBQUc7QUFDakIsRUFBRSxVQUFVLEVBQUV0QixJQUFpQjtBQUMvQixFQUFFLFlBQVksRUFBRUUsTUFBbUI7QUFDbkMsRUFBRSxZQUFZLEVBQUVtQixNQUFtQjtBQUNuQyxFQUFFLFVBQVUsRUFBRUMsSUFBaUI7QUFDL0IsRUFBRSxZQUFZLEVBQUVDLE1BQW1CO0FBQ25DLEVBQUUsaUJBQWlCLEVBQUVDLFdBQXdCO0FBQzdDLEVBQUUsa0JBQWtCLEVBQUVDLFlBQXlCO0FBQy9DLEVBQUUsNkJBQTZCLEVBQUVDLHVCQUFvQztBQUNyRSxFQUFFLGFBQWEsRUFBRW1DLE9BQW9CO0FBQ3JDLENBQUM7OztBQ1hELE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNsQixNQUFNLEVBQUUsR0FBRzdELFFBQXFCLENBQUM7QUFDakMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQjtBQUNBLFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxLQUFLO0FBQ25DLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsSUFBSSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztBQUN6QyxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0FBQzNDLElBQUksTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDdkMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDO0FBQ3hDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxJQUFJO0FBQ3JCLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7QUFDMUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJO0FBQ3RCLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUM7QUFDM0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJO0FBQ2pCLEVBQUUsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUM7QUFDcEMsRUFBRSxPQUFPLFFBQVEsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFO0FBQ3RDLElBQUksUUFBUSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELEdBQUcsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
|
|
5707
|
+
export { index as i, prompts as p };
|
|
5708
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtMDcyYzQ1ZmQuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9rbGV1ckAzLjAuMy9ub2RlX21vZHVsZXMva2xldXIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvYWN0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL3N0cmlwLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Npc3RlcmFuc2lAMS4wLjUvbm9kZV9tb2R1bGVzL3Npc3RlcmFuc2kvc3JjL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2NsZWFyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2ZpZ3VyZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvc3R5bGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvbGluZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3V0aWwvd3JhcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvdXRpbC9lbnRyaWVzVG9EaXNwbGF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC91dGlsL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9wcm9tcHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2VsZW1lbnRzL3RleHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2VsZW1lbnRzL3NlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvdG9nZ2xlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvZGF0ZXBhcnQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2RhdGVwYXJ0cy9tZXJpZGllbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL2RheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL2hvdXJzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvbWlsbGlzZWNvbmRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvbWludXRlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL21vbnRoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9kYXRlcGFydHMvc2Vjb25kcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZGF0ZXBhcnRzL3llYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2RhdGVwYXJ0cy9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvZGF0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvbnVtYmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9tdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvYXV0b2NvbXBsZXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvZGlzdC9lbGVtZW50cy9hdXRvY29tcGxldGVNdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvY29uZmlybS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2Rpc3QvZWxlbWVudHMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L3Byb21wdHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9kaXN0L2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvYWN0aW9uLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvc3RyaXAuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9jbGVhci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2ZpZ3VyZXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9zdHlsZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2xpbmVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3V0aWwvd3JhcC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi91dGlsL2VudHJpZXNUb0Rpc3BsYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvdXRpbC9pbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9wcm9tcHQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvdGV4dC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9zZWxlY3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvdG9nZ2xlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2RhdGVwYXJ0cy9kYXRlcGFydC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbWVyaWRpZW0uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL2RheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvaG91cnMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL21pbGxpc2Vjb25kcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbWludXRlcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9kYXRlcGFydHMvbW9udGguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL3NlY29uZHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL3llYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZGF0ZXBhcnRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2RhdGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvZWxlbWVudHMvbnVtYmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL211bHRpc2VsZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2F1dG9jb21wbGV0ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9hdXRvY29tcGxldGVNdWx0aXNlbGVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9wcm9tcHRzQDIuNC4yL25vZGVfbW9kdWxlcy9wcm9tcHRzL2xpYi9lbGVtZW50cy9jb25maXJtLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL2VsZW1lbnRzL2luZGV4LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3Byb21wdHNAMi40LjIvbm9kZV9tb2R1bGVzL3Byb21wdHMvbGliL3Byb21wdHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9saWIvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vcHJvbXB0c0AyLjQuMi9ub2RlX21vZHVsZXMvcHJvbXB0cy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHsgRk9SQ0VfQ09MT1IsIE5PREVfRElTQUJMRV9DT0xPUlMsIFRFUk0gfSA9IHByb2Nlc3MuZW52O1xuXG5jb25zdCAkID0ge1xuXHRlbmFibGVkOiAhTk9ERV9ESVNBQkxFX0NPTE9SUyAmJiBURVJNICE9PSAnZHVtYicgJiYgRk9SQ0VfQ09MT1IgIT09ICcwJyxcblxuXHQvLyBtb2RpZmllcnNcblx0cmVzZXQ6IGluaXQoMCwgMCksXG5cdGJvbGQ6IGluaXQoMSwgMjIpLFxuXHRkaW06IGluaXQoMiwgMjIpLFxuXHRpdGFsaWM6IGluaXQoMywgMjMpLFxuXHR1bmRlcmxpbmU6IGluaXQoNCwgMjQpLFxuXHRpbnZlcnNlOiBpbml0KDcsIDI3KSxcblx0aGlkZGVuOiBpbml0KDgsIDI4KSxcblx0c3RyaWtldGhyb3VnaDogaW5pdCg5LCAyOSksXG5cblx0Ly8gY29sb3JzXG5cdGJsYWNrOiBpbml0KDMwLCAzOSksXG5cdHJlZDogaW5pdCgzMSwgMzkpLFxuXHRncmVlbjogaW5pdCgzMiwgMzkpLFxuXHR5ZWxsb3c6IGluaXQoMzMsIDM5KSxcblx0Ymx1ZTogaW5pdCgzNCwgMzkpLFxuXHRtYWdlbnRhOiBpbml0KDM1LCAzOSksXG5cdGN5YW46IGluaXQoMzYsIDM5KSxcblx0d2hpdGU6IGluaXQoMzcsIDM5KSxcblx0Z3JheTogaW5pdCg5MCwgMzkpLFxuXHRncmV5OiBpbml0KDkwLCAzOSksXG5cblx0Ly8gYmFja2dyb3VuZCBjb2xvcnNcblx0YmdCbGFjazogaW5pdCg0MCwgNDkpLFxuXHRiZ1JlZDogaW5pdCg0MSwgNDkpLFxuXHRiZ0dyZWVuOiBpbml0KDQyLCA0OSksXG5cdGJnWWVsbG93OiBpbml0KDQzLCA0OSksXG5cdGJnQmx1ZTogaW5pdCg0NCwgNDkpLFxuXHRiZ01hZ2VudGE6IGluaXQoNDUsIDQ5KSxcblx0YmdDeWFuOiBpbml0KDQ2LCA0OSksXG5cdGJnV2hpdGU6IGluaXQoNDcsIDQ5KVxufTtcblxuZnVuY3Rpb24gcnVuKGFyciwgc3RyKSB7XG5cdGxldCBpPTAsIHRtcCwgYmVnPScnLCBlbmQ9Jyc7XG5cdGZvciAoOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0dG1wID0gYXJyW2ldO1xuXHRcdGJlZyArPSB0bXAub3Blbjtcblx0XHRlbmQgKz0gdG1wLmNsb3NlO1xuXHRcdGlmIChzdHIuaW5jbHVkZXModG1wLmNsb3NlKSkge1xuXHRcdFx0c3RyID0gc3RyLnJlcGxhY2UodG1wLnJneCwgdG1wLmNsb3NlICsgdG1wLm9wZW4pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYmVnICsgc3RyICsgZW5kO1xufVxuXG5mdW5jdGlvbiBjaGFpbihoYXMsIGtleXMpIHtcblx0bGV0IGN0eCA9IHsgaGFzLCBrZXlzIH07XG5cblx0Y3R4LnJlc2V0ID0gJC5yZXNldC5iaW5kKGN0eCk7XG5cdGN0eC5ib2xkID0gJC5ib2xkLmJpbmQoY3R4KTtcblx0Y3R4LmRpbSA9ICQuZGltLmJpbmQoY3R4KTtcblx0Y3R4Lml0YWxpYyA9ICQuaXRhbGljLmJpbmQoY3R4KTtcblx0Y3R4LnVuZGVybGluZSA9ICQudW5kZXJsaW5lLmJpbmQoY3R4KTtcblx0Y3R4LmludmVyc2UgPSAkLmludmVyc2UuYmluZChjdHgpO1xuXHRjdHguaGlkZGVuID0gJC5oaWRkZW4uYmluZChjdHgpO1xuXHRjdHguc3RyaWtldGhyb3VnaCA9ICQuc3RyaWtldGhyb3VnaC5iaW5kKGN0eCk7XG5cblx0Y3R4LmJsYWNrID0gJC5ibGFjay5iaW5kKGN0eCk7XG5cdGN0eC5yZWQgPSAkLnJlZC5iaW5kKGN0eCk7XG5cdGN0eC5ncmVlbiA9ICQuZ3JlZW4uYmluZChjdHgpO1xuXHRjdHgueWVsbG93ID0gJC55ZWxsb3cuYmluZChjdHgpO1xuXHRjdHguYmx1ZSA9ICQuYmx1ZS5iaW5kKGN0eCk7XG5cdGN0eC5tYWdlbnRhID0gJC5tYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmN5YW4gPSAkLmN5YW4uYmluZChjdHgpO1xuXHRjdHgud2hpdGUgPSAkLndoaXRlLmJpbmQoY3R4KTtcblx0Y3R4LmdyYXkgPSAkLmdyYXkuYmluZChjdHgpO1xuXHRjdHguZ3JleSA9ICQuZ3JleS5iaW5kKGN0eCk7XG5cblx0Y3R4LmJnQmxhY2sgPSAkLmJnQmxhY2suYmluZChjdHgpO1xuXHRjdHguYmdSZWQgPSAkLmJnUmVkLmJpbmQoY3R4KTtcblx0Y3R4LmJnR3JlZW4gPSAkLmJnR3JlZW4uYmluZChjdHgpO1xuXHRjdHguYmdZZWxsb3cgPSAkLmJnWWVsbG93LmJpbmQoY3R4KTtcblx0Y3R4LmJnQmx1ZSA9ICQuYmdCbHVlLmJpbmQoY3R4KTtcblx0Y3R4LmJnTWFnZW50YSA9ICQuYmdNYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmJnQ3lhbiA9ICQuYmdDeWFuLmJpbmQoY3R4KTtcblx0Y3R4LmJnV2hpdGUgPSAkLmJnV2hpdGUuYmluZChjdHgpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UpIHtcblx0bGV0IGJsayA9IHtcblx0XHRvcGVuOiBgXFx4MWJbJHtvcGVufW1gLFxuXHRcdGNsb3NlOiBgXFx4MWJbJHtjbG9zZX1tYCxcblx0XHRyZ3g6IG5ldyBSZWdFeHAoYFxcXFx4MWJcXFxcWyR7Y2xvc2V9bWAsICdnJylcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uICh0eHQpIHtcblx0XHRpZiAodGhpcyAhPT0gdm9pZCAwICYmIHRoaXMuaGFzICE9PSB2b2lkIDApIHtcblx0XHRcdHRoaXMuaGFzLmluY2x1ZGVzKG9wZW4pIHx8ICh0aGlzLmhhcy5wdXNoKG9wZW4pLHRoaXMua2V5cy5wdXNoKGJsaykpO1xuXHRcdFx0cmV0dXJuIHR4dCA9PT0gdm9pZCAwID8gdGhpcyA6ICQuZW5hYmxlZCA/IHJ1bih0aGlzLmtleXMsIHR4dCsnJykgOiB0eHQrJyc7XG5cdFx0fVxuXHRcdHJldHVybiB0eHQgPT09IHZvaWQgMCA/IGNoYWluKFtvcGVuXSwgW2Jsa10pIDogJC5lbmFibGVkID8gcnVuKFtibGtdLCB0eHQrJycpIDogdHh0KycnO1xuXHR9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9ICQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gKGtleSwgaXNTZWxlY3QpID0+IHtcbiAgaWYgKGtleS5tZXRhICYmIGtleS5uYW1lICE9PSAnZXNjYXBlJykgcmV0dXJuO1xuXG4gIGlmIChrZXkuY3RybCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2EnKSByZXR1cm4gJ2ZpcnN0JztcbiAgICBpZiAoa2V5Lm5hbWUgPT09ICdjJykgcmV0dXJuICdhYm9ydCc7XG4gICAgaWYgKGtleS5uYW1lID09PSAnZCcpIHJldHVybiAnYWJvcnQnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2UnKSByZXR1cm4gJ2xhc3QnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2cnKSByZXR1cm4gJ3Jlc2V0JztcbiAgfVxuXG4gIGlmIChpc1NlbGVjdCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2onKSByZXR1cm4gJ2Rvd24nO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2snKSByZXR1cm4gJ3VwJztcbiAgfVxuXG4gIGlmIChrZXkubmFtZSA9PT0gJ3JldHVybicpIHJldHVybiAnc3VibWl0JztcbiAgaWYgKGtleS5uYW1lID09PSAnZW50ZXInKSByZXR1cm4gJ3N1Ym1pdCc7IC8vIGN0cmwgKyBKXG5cbiAgaWYgKGtleS5uYW1lID09PSAnYmFja3NwYWNlJykgcmV0dXJuICdkZWxldGUnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkZWxldGUnKSByZXR1cm4gJ2RlbGV0ZUZvcndhcmQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdhYm9ydCcpIHJldHVybiAnYWJvcnQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlc2NhcGUnKSByZXR1cm4gJ2V4aXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICd0YWInKSByZXR1cm4gJ25leHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdlZG93bicpIHJldHVybiAnbmV4dFBhZ2UnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdldXAnKSByZXR1cm4gJ3ByZXZQYWdlJzsgLy8gVE9ETyBjcmVhdGUgaG9tZSgpIGluIHByb21wdCB0eXBlcyAoZS5nLiBUZXh0UHJvbXB0KVxuXG4gIGlmIChrZXkubmFtZSA9PT0gJ2hvbWUnKSByZXR1cm4gJ2hvbWUnOyAvLyBUT0RPIGNyZWF0ZSBlbmQoKSBpbiBwcm9tcHQgdHlwZXMgKGUuZy4gVGV4dFByb21wdClcblxuICBpZiAoa2V5Lm5hbWUgPT09ICdlbmQnKSByZXR1cm4gJ2VuZCc7XG4gIGlmIChrZXkubmFtZSA9PT0gJ3VwJykgcmV0dXJuICd1cCc7XG4gIGlmIChrZXkubmFtZSA9PT0gJ2Rvd24nKSByZXR1cm4gJ2Rvd24nO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdyaWdodCcpIHJldHVybiAncmlnaHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdsZWZ0JykgcmV0dXJuICdsZWZ0JztcbiAgcmV0dXJuIGZhbHNlO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyID0+IHtcbiAgY29uc3QgcGF0dGVybiA9IFsnW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KScsICcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUlpjZi1udHFyeT0+PH5dKSknXS5qb2luKCd8Jyk7XG4gIGNvbnN0IFJHWCA9IG5ldyBSZWdFeHAocGF0dGVybiwgJ2cnKTtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnID8gc3RyLnJlcGxhY2UoUkdYLCAnJykgOiBzdHI7XG59OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRVNDID0gJ1xceDFCJztcbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbmNvbnN0IGJlZXAgPSAnXFx1MDAwNyc7XG5cbmNvbnN0IGN1cnNvciA9IHtcbiAgdG8oeCwgeSkge1xuICAgIGlmICgheSkgcmV0dXJuIGAke0NTSX0ke3ggKyAxfUdgO1xuICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcbiAgfSxcbiAgbW92ZSh4LCB5KSB7XG4gICAgbGV0IHJldCA9ICcnO1xuXG4gICAgaWYgKHggPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXh9RGA7XG4gICAgZWxzZSBpZiAoeCA+IDApIHJldCArPSBgJHtDU0l9JHt4fUNgO1xuXG4gICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gICAgZWxzZSBpZiAoeSA+IDApIHJldCArPSBgJHtDU0l9JHt5fUJgO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUFgLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1CYCxcbiAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG4gIGJhY2t3YXJkOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1EYCxcbiAgbmV4dExpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1FYC5yZXBlYXQoY291bnQpLFxuICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG4gIGxlZnQ6IGAke0NTSX1HYCxcbiAgaGlkZTogYCR7Q1NJfT8yNWxgLFxuICBzaG93OiBgJHtDU0l9PzI1aGAsXG4gIHNhdmU6IGAke0VTQ303YCxcbiAgcmVzdG9yZTogYCR7RVNDfThgXG59XG5cbmNvbnN0IHNjcm9sbCA9IHtcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX1TYC5yZXBlYXQoY291bnQpLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9VGAucmVwZWF0KGNvdW50KVxufVxuXG5jb25zdCBlcmFzZSA9IHtcbiAgc2NyZWVuOiBgJHtDU0l9MkpgLFxuICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfTFKYC5yZXBlYXQoY291bnQpLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9SmAucmVwZWF0KGNvdW50KSxcbiAgbGluZTogYCR7Q1NJfTJLYCxcbiAgbGluZUVuZDogYCR7Q1NJfUtgLFxuICBsaW5lU3RhcnQ6IGAke0NTSX0xS2AsXG4gIGxpbmVzKGNvdW50KSB7XG4gICAgbGV0IGNsZWFyID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuICAgICAgY2xlYXIgKz0gdGhpcy5saW5lICsgKGkgPCBjb3VudCAtIDEgPyBjdXJzb3IudXAoKSA6ICcnKTtcbiAgICBpZiAoY291bnQpXG4gICAgICBjbGVhciArPSBjdXJzb3IubGVmdDtcbiAgICByZXR1cm4gY2xlYXI7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IGN1cnNvciwgc2Nyb2xsLCBlcmFzZSwgYmVlcCB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcihvLCBhbGxvd0FycmF5TGlrZSkgeyB2YXIgaXQgPSB0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSB8fCBvW1wiQEBpdGVyYXRvclwiXTsgaWYgKCFpdCkgeyBpZiAoQXJyYXkuaXNBcnJheShvKSB8fCAoaXQgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobykpIHx8IGFsbG93QXJyYXlMaWtlICYmIG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSB7IGlmIChpdCkgbyA9IGl0OyB2YXIgaSA9IDA7IHZhciBGID0gZnVuY3Rpb24gRigpIHt9OyByZXR1cm4geyBzOiBGLCBuOiBmdW5jdGlvbiBuKCkgeyBpZiAoaSA+PSBvLmxlbmd0aCkgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9OyByZXR1cm4geyBkb25lOiBmYWxzZSwgdmFsdWU6IG9baSsrXSB9OyB9LCBlOiBmdW5jdGlvbiBlKF9lKSB7IHRocm93IF9lOyB9LCBmOiBGIH07IH0gdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBpdGVyYXRlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9IHZhciBub3JtYWxDb21wbGV0aW9uID0gdHJ1ZSwgZGlkRXJyID0gZmFsc2UsIGVycjsgcmV0dXJuIHsgczogZnVuY3Rpb24gcygpIHsgaXQgPSBpdC5jYWxsKG8pOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgc3RlcCA9IGl0Lm5leHQoKTsgbm9ybWFsQ29tcGxldGlvbiA9IHN0ZXAuZG9uZTsgcmV0dXJuIHN0ZXA7IH0sIGU6IGZ1bmN0aW9uIGUoX2UyKSB7IGRpZEVyciA9IHRydWU7IGVyciA9IF9lMjsgfSwgZjogZnVuY3Rpb24gZigpIHsgdHJ5IHsgaWYgKCFub3JtYWxDb21wbGV0aW9uICYmIGl0LnJldHVybiAhPSBudWxsKSBpdC5yZXR1cm4oKTsgfSBmaW5hbGx5IHsgaWYgKGRpZEVycikgdGhyb3cgZXJyOyB9IH0gfTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTsgcmV0dXJuIGFycjI7IH1cblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3Qgd2lkdGggPSBzdHIgPT4gWy4uLnN0cmlwKHN0cildLmxlbmd0aDtcbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByb21wdFxuICogQHBhcmFtIHtudW1iZXJ9IHBlckxpbmVcbiAqL1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHByb21wdCwgcGVyTGluZSkge1xuICBpZiAoIXBlckxpbmUpIHJldHVybiBlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApO1xuICBsZXQgcm93cyA9IDA7XG4gIGNvbnN0IGxpbmVzID0gcHJvbXB0LnNwbGl0KC9cXHI/XFxuLyk7XG5cbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGxpbmVzKSxcbiAgICAgIF9zdGVwO1xuXG4gIHRyeSB7XG4gICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgIGxldCBsaW5lID0gX3N0ZXAudmFsdWU7XG4gICAgICByb3dzICs9IDEgKyBNYXRoLmZsb29yKE1hdGgubWF4KHdpZHRoKGxpbmUpIC0gMSwgMCkgLyBwZXJMaW5lKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIF9pdGVyYXRvci5lKGVycik7XG4gIH0gZmluYWxseSB7XG4gICAgX2l0ZXJhdG9yLmYoKTtcbiAgfVxuXG4gIHJldHVybiBlcmFzZS5saW5lcyhyb3dzKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBtYWluID0ge1xuICBhcnJvd1VwOiAn4oaRJyxcbiAgYXJyb3dEb3duOiAn4oaTJyxcbiAgYXJyb3dMZWZ0OiAn4oaQJyxcbiAgYXJyb3dSaWdodDogJ+KGkicsXG4gIHJhZGlvT246ICfil4knLFxuICByYWRpb09mZjogJ+KXrycsXG4gIHRpY2s6ICfinJQnLFxuICBjcm9zczogJ+KclicsXG4gIGVsbGlwc2lzOiAn4oCmJyxcbiAgcG9pbnRlclNtYWxsOiAn4oC6JyxcbiAgbGluZTogJ+KUgCcsXG4gIHBvaW50ZXI6ICfina8nXG59O1xuY29uc3Qgd2luID0ge1xuICBhcnJvd1VwOiBtYWluLmFycm93VXAsXG4gIGFycm93RG93bjogbWFpbi5hcnJvd0Rvd24sXG4gIGFycm93TGVmdDogbWFpbi5hcnJvd0xlZnQsXG4gIGFycm93UmlnaHQ6IG1haW4uYXJyb3dSaWdodCxcbiAgcmFkaW9PbjogJygqKScsXG4gIHJhZGlvT2ZmOiAnKCApJyxcbiAgdGljazogJ+KImicsXG4gIGNyb3NzOiAnw5cnLFxuICBlbGxpcHNpczogJy4uLicsXG4gIHBvaW50ZXJTbWFsbDogJ8K7JyxcbiAgbGluZTogJ+KUgCcsXG4gIHBvaW50ZXI6ICc+J1xufTtcbmNvbnN0IGZpZ3VyZXMgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luIDogbWFpbjtcbm1vZHVsZS5leHBvcnRzID0gZmlndXJlczsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGMgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBmaWd1cmVzID0gcmVxdWlyZSgnLi9maWd1cmVzJyk7IC8vIHJlbmRlcmluZyB1c2VyIGlucHV0LlxuXG5cbmNvbnN0IHN0eWxlcyA9IE9iamVjdC5mcmVlemUoe1xuICBwYXNzd29yZDoge1xuICAgIHNjYWxlOiAxLFxuICAgIHJlbmRlcjogaW5wdXQgPT4gJyonLnJlcGVhdChpbnB1dC5sZW5ndGgpXG4gIH0sXG4gIGVtb2ppOiB7XG4gICAgc2NhbGU6IDIsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiAn8J+YgycucmVwZWF0KGlucHV0Lmxlbmd0aClcbiAgfSxcbiAgaW52aXNpYmxlOiB7XG4gICAgc2NhbGU6IDAsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiAnJ1xuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgc2NhbGU6IDEsXG4gICAgcmVuZGVyOiBpbnB1dCA9PiBgJHtpbnB1dH1gXG4gIH1cbn0pO1xuXG5jb25zdCByZW5kZXIgPSB0eXBlID0+IHN0eWxlc1t0eXBlXSB8fCBzdHlsZXMuZGVmYXVsdDsgLy8gaWNvbiB0byBzaWduYWxpemUgYSBwcm9tcHQuXG5cblxuY29uc3Qgc3ltYm9scyA9IE9iamVjdC5mcmVlemUoe1xuICBhYm9ydGVkOiBjLnJlZChmaWd1cmVzLmNyb3NzKSxcbiAgZG9uZTogYy5ncmVlbihmaWd1cmVzLnRpY2spLFxuICBleGl0ZWQ6IGMueWVsbG93KGZpZ3VyZXMuY3Jvc3MpLFxuICBkZWZhdWx0OiBjLmN5YW4oJz8nKVxufSk7XG5cbmNvbnN0IHN5bWJvbCA9IChkb25lLCBhYm9ydGVkLCBleGl0ZWQpID0+IGFib3J0ZWQgPyBzeW1ib2xzLmFib3J0ZWQgOiBleGl0ZWQgPyBzeW1ib2xzLmV4aXRlZCA6IGRvbmUgPyBzeW1ib2xzLmRvbmUgOiBzeW1ib2xzLmRlZmF1bHQ7IC8vIGJldHdlZW4gdGhlIHF1ZXN0aW9uIGFuZCB0aGUgdXNlcidzIGlucHV0LlxuXG5cbmNvbnN0IGRlbGltaXRlciA9IGNvbXBsZXRpbmcgPT4gYy5ncmF5KGNvbXBsZXRpbmcgPyBmaWd1cmVzLmVsbGlwc2lzIDogZmlndXJlcy5wb2ludGVyU21hbGwpO1xuXG5jb25zdCBpdGVtID0gKGV4cGFuZGFibGUsIGV4cGFuZGVkKSA9PiBjLmdyYXkoZXhwYW5kYWJsZSA/IGV4cGFuZGVkID8gZmlndXJlcy5wb2ludGVyU21hbGwgOiAnKycgOiBmaWd1cmVzLmxpbmUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc3R5bGVzLFxuICByZW5kZXIsXG4gIHN5bWJvbHMsXG4gIHN5bWJvbCxcbiAgZGVsaW1pdGVyLFxuICBpdGVtXG59OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dcbiAqIEBwYXJhbSB7bnVtYmVyfSBwZXJMaW5lXG4gKi9cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChtc2csIHBlckxpbmUpIHtcbiAgbGV0IGxpbmVzID0gU3RyaW5nKHN0cmlwKG1zZykgfHwgJycpLnNwbGl0KC9cXHI/XFxuLyk7XG4gIGlmICghcGVyTGluZSkgcmV0dXJuIGxpbmVzLmxlbmd0aDtcbiAgcmV0dXJuIGxpbmVzLm1hcChsID0+IE1hdGguY2VpbChsLmxlbmd0aCAvIHBlckxpbmUpKS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIFRoZSBtZXNzYWdlIHRvIHdyYXBcbiAqIEBwYXJhbSB7b2JqZWN0fSBvcHRzXG4gKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IFtvcHRzLm1hcmdpbl0gTGVmdCBtYXJnaW5cbiAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLndpZHRoIE1heGltdW0gY2hhcmFjdGVycyBwZXIgbGluZSBpbmNsdWRpbmcgdGhlIG1hcmdpblxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gKG1zZywgb3B0cyA9IHt9KSA9PiB7XG4gIGNvbnN0IHRhYiA9IE51bWJlci5pc1NhZmVJbnRlZ2VyKHBhcnNlSW50KG9wdHMubWFyZ2luKSkgPyBuZXcgQXJyYXkocGFyc2VJbnQob3B0cy5tYXJnaW4pKS5maWxsKCcgJykuam9pbignJykgOiBvcHRzLm1hcmdpbiB8fCAnJztcbiAgY29uc3Qgd2lkdGggPSBvcHRzLndpZHRoO1xuICByZXR1cm4gKG1zZyB8fCAnJykuc3BsaXQoL1xccj9cXG4vZykubWFwKGxpbmUgPT4gbGluZS5zcGxpdCgvXFxzKy9nKS5yZWR1Y2UoKGFyciwgdykgPT4ge1xuICAgIGlmICh3Lmxlbmd0aCArIHRhYi5sZW5ndGggPj0gd2lkdGggfHwgYXJyW2Fyci5sZW5ndGggLSAxXS5sZW5ndGggKyB3Lmxlbmd0aCArIDEgPCB3aWR0aCkgYXJyW2Fyci5sZW5ndGggLSAxXSArPSBgICR7d31gO2Vsc2UgYXJyLnB1c2goYCR7dGFifSR7d31gKTtcbiAgICByZXR1cm4gYXJyO1xuICB9LCBbdGFiXSkuam9pbignXFxuJykpLmpvaW4oJ1xcbicpO1xufTsiLCIndXNlIHN0cmljdCc7XG4vKipcbiAqIERldGVybWluZSB3aGF0IGVudHJpZXMgc2hvdWxkIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLCBiYXNlZCBvbiB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBpbmRleCBhbmQgdGhlIG1heGltdW0gdmlzaWJsZS4gVXNlZCBpbiBsaXN0LWJhc2VkXG4gKiBwcm9tcHRzIGxpa2UgYHNlbGVjdGAgYW5kIGBtdWx0aXNlbGVjdGAuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnNvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGVudHJ5XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWwgdGhlIHRvdGFsIGVudHJpZXMgYXZhaWxhYmxlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4VmlzaWJsZV0gdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGJlIGRpc3BsYXllZFxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gKGN1cnNvciwgdG90YWwsIG1heFZpc2libGUpID0+IHtcbiAgbWF4VmlzaWJsZSA9IG1heFZpc2libGUgfHwgdG90YWw7XG4gIGxldCBzdGFydEluZGV4ID0gTWF0aC5taW4odG90YWwgLSBtYXhWaXNpYmxlLCBjdXJzb3IgLSBNYXRoLmZsb29yKG1heFZpc2libGUgLyAyKSk7XG4gIGlmIChzdGFydEluZGV4IDwgMCkgc3RhcnRJbmRleCA9IDA7XG4gIGxldCBlbmRJbmRleCA9IE1hdGgubWluKHN0YXJ0SW5kZXggKyBtYXhWaXNpYmxlLCB0b3RhbCk7XG4gIHJldHVybiB7XG4gICAgc3RhcnRJbmRleCxcbiAgICBlbmRJbmRleFxuICB9O1xufTsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhY3Rpb246IHJlcXVpcmUoJy4vYWN0aW9uJyksXG4gIGNsZWFyOiByZXF1aXJlKCcuL2NsZWFyJyksXG4gIHN0eWxlOiByZXF1aXJlKCcuL3N0eWxlJyksXG4gIHN0cmlwOiByZXF1aXJlKCcuL3N0cmlwJyksXG4gIGZpZ3VyZXM6IHJlcXVpcmUoJy4vZmlndXJlcycpLFxuICBsaW5lczogcmVxdWlyZSgnLi9saW5lcycpLFxuICB3cmFwOiByZXF1aXJlKCcuL3dyYXAnKSxcbiAgZW50cmllc1RvRGlzcGxheTogcmVxdWlyZSgnLi9lbnRyaWVzVG9EaXNwbGF5Jylcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCByZWFkbGluZSA9IHJlcXVpcmUoJ3JlYWRsaW5lJyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgYWN0aW9uID0gX3JlcXVpcmUuYWN0aW9uO1xuXG5jb25zdCBFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCdldmVudHMnKTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgYmVlcCA9IF9yZXF1aXJlMi5iZWVwLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUyLmN1cnNvcjtcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuLyoqXG4gKiBCYXNlIHByb21wdCBza2VsZXRvblxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKi9cblxuXG5jbGFzcyBQcm9tcHQgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZmlyc3RSZW5kZXIgPSB0cnVlO1xuICAgIHRoaXMuaW4gPSBvcHRzLnN0ZGluIHx8IHByb2Nlc3Muc3RkaW47XG4gICAgdGhpcy5vdXQgPSBvcHRzLnN0ZG91dCB8fCBwcm9jZXNzLnN0ZG91dDtcblxuICAgIHRoaXMub25SZW5kZXIgPSAob3B0cy5vblJlbmRlciB8fCAoKCkgPT4gdm9pZCAwKSkuYmluZCh0aGlzKTtcblxuICAgIGNvbnN0IHJsID0gcmVhZGxpbmUuY3JlYXRlSW50ZXJmYWNlKHtcbiAgICAgIGlucHV0OiB0aGlzLmluLFxuICAgICAgZXNjYXBlQ29kZVRpbWVvdXQ6IDUwXG4gICAgfSk7XG4gICAgcmVhZGxpbmUuZW1pdEtleXByZXNzRXZlbnRzKHRoaXMuaW4sIHJsKTtcbiAgICBpZiAodGhpcy5pbi5pc1RUWSkgdGhpcy5pbi5zZXRSYXdNb2RlKHRydWUpO1xuICAgIGNvbnN0IGlzU2VsZWN0ID0gWydTZWxlY3RQcm9tcHQnLCAnTXVsdGlzZWxlY3RQcm9tcHQnXS5pbmRleE9mKHRoaXMuY29uc3RydWN0b3IubmFtZSkgPiAtMTtcblxuICAgIGNvbnN0IGtleXByZXNzID0gKHN0ciwga2V5KSA9PiB7XG4gICAgICBsZXQgYSA9IGFjdGlvbihrZXksIGlzU2VsZWN0KTtcblxuICAgICAgaWYgKGEgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuXyAmJiB0aGlzLl8oc3RyLCBrZXkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpc1thXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzW2FdKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJlbGwoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jbG9zZSA9ICgpID0+IHtcbiAgICAgIHRoaXMub3V0LndyaXRlKGN1cnNvci5zaG93KTtcbiAgICAgIHRoaXMuaW4ucmVtb3ZlTGlzdGVuZXIoJ2tleXByZXNzJywga2V5cHJlc3MpO1xuICAgICAgaWYgKHRoaXMuaW4uaXNUVFkpIHRoaXMuaW4uc2V0UmF3TW9kZShmYWxzZSk7XG4gICAgICBybC5jbG9zZSgpO1xuICAgICAgdGhpcy5lbWl0KHRoaXMuYWJvcnRlZCA/ICdhYm9ydCcgOiB0aGlzLmV4aXRlZCA/ICdleGl0JyA6ICdzdWJtaXQnLCB0aGlzLnZhbHVlKTtcbiAgICAgIHRoaXMuY2xvc2VkID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgdGhpcy5pbi5vbigna2V5cHJlc3MnLCBrZXlwcmVzcyk7XG4gIH1cblxuICBmaXJlKCkge1xuICAgIHRoaXMuZW1pdCgnc3RhdGUnLCB7XG4gICAgICB2YWx1ZTogdGhpcy52YWx1ZSxcbiAgICAgIGFib3J0ZWQ6ICEhdGhpcy5hYm9ydGVkLFxuICAgICAgZXhpdGVkOiAhIXRoaXMuZXhpdGVkXG4gICAgfSk7XG4gIH1cblxuICBiZWxsKCkge1xuICAgIHRoaXMub3V0LndyaXRlKGJlZXApO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHRoaXMub25SZW5kZXIoY29sb3IpO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLmZpcnN0UmVuZGVyID0gZmFsc2U7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21wdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykgeyB0cnkgeyB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7IHZhciB2YWx1ZSA9IGluZm8udmFsdWU7IH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IHJldHVybjsgfSBpZiAoaW5mby5kb25lKSB7IHJlc29sdmUodmFsdWUpOyB9IGVsc2UgeyBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7IH0gfVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTsgZnVuY3Rpb24gX25leHQodmFsdWUpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpOyB9IGZ1bmN0aW9uIF90aHJvdyhlcnIpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7IH0gX25leHQodW5kZWZpbmVkKTsgfSk7IH07IH1cblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGVyYXNlID0gX3JlcXVpcmUuZXJhc2UsXG4gICAgICBjdXJzb3IgPSBfcmVxdWlyZS5jdXJzb3I7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIHN0eWxlID0gX3JlcXVpcmUyLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZTIuY2xlYXIsXG4gICAgICBsaW5lcyA9IF9yZXF1aXJlMi5saW5lcyxcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZTIuZmlndXJlcztcbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnN0eWxlPSdkZWZhdWx0J10gUmVuZGVyIHN0eWxlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuXG5cbmNsYXNzIFRleHRQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gb3B0cy5pbml0aWFsIHx8IGBgO1xuXG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcblxuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLmVycm9yTXNnID0gb3B0cy5lcnJvciB8fCBgUGxlYXNlIEVudGVyIEEgVmFsaWQgVmFsdWVgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKGBgLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdGhpcy5pbml0aWFsKSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSBjb2xvci5ncmF5KHRoaXMudHJhbnNmb3JtLnJlbmRlcih0aGlzLmluaXRpYWwpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXJlZCA9IHRoaXMudHJhbnNmb3JtLnJlbmRlcih2KTtcbiAgICB9XG5cbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgbGV0IHZhbGlkID0geWllbGQgX3RoaXMudmFsaWRhdG9yKF90aGlzLnZhbHVlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gYHN0cmluZ2ApIHtcbiAgICAgICAgX3RoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgX3RoaXMyLnZhbHVlID0gX3RoaXMyLnZhbHVlIHx8IF90aGlzMi5pbml0aWFsO1xuICAgICAgX3RoaXMyLmN1cnNvck9mZnNldCA9IDA7XG4gICAgICBfdGhpczIuY3Vyc29yID0gX3RoaXMyLnJlbmRlcmVkLmxlbmd0aDtcbiAgICAgIHlpZWxkIF90aGlzMi52YWxpZGF0ZSgpO1xuXG4gICAgICBpZiAoX3RoaXMyLmVycm9yKSB7XG4gICAgICAgIF90aGlzMi5yZWQgPSB0cnVlO1xuXG4gICAgICAgIF90aGlzMi5maXJlKCk7XG5cbiAgICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMyLmRvbmUgPSB0cnVlO1xuICAgICAgX3RoaXMyLmFib3J0ZWQgPSBmYWxzZTtcblxuICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICBfdGhpczIub3V0LndyaXRlKCdcXG4nKTtcblxuICAgICAgX3RoaXMyLmNsb3NlKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IgKyBuO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ICs9IG47XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGxldCBzMSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMudmFsdWUuc2xpY2UodGhpcy5jdXJzb3IpO1xuICAgIHRoaXMudmFsdWUgPSBgJHtzMX0ke2N9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnBsYWNlaG9sZGVyID8gMCA6IHMxLmxlbmd0aCArIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pc0N1cnNvckF0U3RhcnQoKSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMudmFsdWUuc2xpY2UoMCwgdGhpcy5jdXJzb3IgLSAxKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5pc0N1cnNvckF0U3RhcnQoKSkge1xuICAgICAgdGhpcy5jdXJzb3JPZmZzZXQgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCsrO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlRm9yd2FyZCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgKiB0aGlzLnNjYWxlID49IHRoaXMucmVuZGVyZWQubGVuZ3RoIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICBsZXQgczEgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgdGhpcy52YWx1ZSA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLnJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdEVuZCgpKSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0Kys7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IoLTEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgKiB0aGlzLnNjYWxlID49IHRoaXMucmVuZGVyZWQubGVuZ3RoIHx8IHRoaXMucGxhY2Vob2xkZXIpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IoMSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGlzQ3Vyc29yQXRTdGFydCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJzb3IgPT09IDAgfHwgdGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLmN1cnNvciA9PT0gMTtcbiAgfVxuXG4gIGlzQ3Vyc29yQXRFbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3Vyc29yID09PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCB8fCB0aGlzLnBsYWNlaG9sZGVyICYmIHRoaXMuY3Vyc29yID09PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCArIDE7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuZmlyc3RSZW5kZXIpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dEVycm9yKSB0aGlzLm91dC53cml0ZShjdXJzb3IuZG93bihsaW5lcyh0aGlzLm91dHB1dEVycm9yLCB0aGlzLm91dC5jb2x1bW5zKSAtIDEpICsgY2xlYXIodGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgfVxuXG4gICAgc3VwZXIucmVuZGVyKCk7XG4gICAgdGhpcy5vdXRwdXRFcnJvciA9ICcnO1xuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksIHRoaXMucmVkID8gY29sb3IucmVkKHRoaXMucmVuZGVyZWQpIDogdGhpcy5yZW5kZXJlZF0uam9pbihgIGApO1xuXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0RXJyb3IgKz0gdGhpcy5lcnJvck1zZy5zcGxpdChgXFxuYCkucmVkdWNlKChhLCBsLCBpKSA9PiBhICsgYFxcbiR7aSA/ICcgJyA6IGZpZ3VyZXMucG9pbnRlclNtYWxsfSAke2NvbG9yLnJlZCgpLml0YWxpYyhsKX1gLCBgYCk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCArIGN1cnNvci5zYXZlICsgdGhpcy5vdXRwdXRFcnJvciArIGN1cnNvci5yZXN0b3JlICsgY3Vyc29yLm1vdmUodGhpcy5jdXJzb3JPZmZzZXQsIDApKTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gVGV4dFByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCcuLi91dGlsJyksXG4gICAgICBzdHlsZSA9IF9yZXF1aXJlLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZS5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZS5maWd1cmVzLFxuICAgICAgd3JhcCA9IF9yZXF1aXJlLndyYXAsXG4gICAgICBlbnRyaWVzVG9EaXNwbGF5ID0gX3JlcXVpcmUuZW50cmllc1RvRGlzcGxheTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUyLmN1cnNvcjtcbi8qKlxuICogU2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbml0aWFsXSBJbmRleCBvZiBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKi9cblxuXG5jbGFzcyBTZWxlY3RQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLm1zZyA9IG9wdHMubWVzc2FnZTtcbiAgICB0aGlzLmhpbnQgPSBvcHRzLmhpbnQgfHwgJy0gVXNlIGFycm93LWtleXMuIFJldHVybiB0byBzdWJtaXQuJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQnO1xuICAgIHRoaXMuY3Vyc29yID0gb3B0cy5pbml0aWFsIHx8IDA7XG4gICAgdGhpcy5jaG9pY2VzID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpIGNoID0ge1xuICAgICAgICB0aXRsZTogY2gsXG4gICAgICAgIHZhbHVlOiBpZHhcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgdmFsdWU6IGNoICYmIChjaC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gaWR4IDogY2gudmFsdWUpLFxuICAgICAgICBkZXNjcmlwdGlvbjogY2ggJiYgY2guZGVzY3JpcHRpb24sXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMub3B0aW9uc1BlclBhZ2UgPSBvcHRzLm9wdGlvbnNQZXJQYWdlIHx8IDEwO1xuICAgIHRoaXMudmFsdWUgPSAodGhpcy5jaG9pY2VzW3RoaXMuY3Vyc29yXSB8fCB7fSkudmFsdWU7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbW92ZUN1cnNvcihuKSB7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmNob2ljZXNbbl0udmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IoMCk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdGlvbi5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH0gZWxzZSB0aGlzLmJlbGwoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmNob2ljZXMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciAtIDEpO1xuICAgIH1cblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gdGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKCh0aGlzLmN1cnNvciArIDEpICUgdGhpcy5jaG9pY2VzLmxlbmd0aCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykgcmV0dXJuIHRoaXMuc3VibWl0KCk7XG4gIH1cblxuICBnZXQgc2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmNob2ljZXNbdGhpcy5jdXJzb3JdO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTtcblxuICAgIGxldCBfZW50cmllc1RvRGlzcGxheSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMub3B0aW9uc1BlclBhZ2UpLFxuICAgICAgICBzdGFydEluZGV4ID0gX2VudHJpZXNUb0Rpc3BsYXkuc3RhcnRJbmRleCxcbiAgICAgICAgZW5kSW5kZXggPSBfZW50cmllc1RvRGlzcGxheS5lbmRJbmRleDsgLy8gUHJpbnQgcHJvbXB0XG5cblxuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSwgdGhpcy5kb25lID8gdGhpcy5zZWxlY3Rpb24udGl0bGUgOiB0aGlzLnNlbGVjdGlvbi5kaXNhYmxlZCA/IGNvbG9yLnllbGxvdyh0aGlzLndhcm4pIDogY29sb3IuZ3JheSh0aGlzLmhpbnQpXS5qb2luKCcgJyk7IC8vIFByaW50IGNob2ljZXNcblxuICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICB0aGlzLm91dHB1dFRleHQgKz0gJ1xcbic7XG5cbiAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykge1xuICAgICAgICBsZXQgdGl0bGUsXG4gICAgICAgICAgICBwcmVmaXgsXG4gICAgICAgICAgICBkZXNjID0gJycsXG4gICAgICAgICAgICB2ID0gdGhpcy5jaG9pY2VzW2ldOyAvLyBEZXRlcm1pbmUgd2hldGhlciB0byBkaXNwbGF5IFwibW9yZSBjaG9pY2VzXCIgaW5kaWNhdG9yc1xuXG4gICAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd1VwO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93RG93bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgICAgICAgcHJlZml4ID0gKHRoaXMuY3Vyc29yID09PSBpID8gY29sb3IuYm9sZCgpLmdyYXkoZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICAgICAgICBwcmVmaXggPSAodGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKGZpZ3VyZXMucG9pbnRlcikgKyAnICcgOiAnICAnKSArIHByZWZpeDtcblxuICAgICAgICAgIGlmICh2LmRlc2NyaXB0aW9uICYmIHRoaXMuY3Vyc29yID09PSBpKSB7XG4gICAgICAgICAgICBkZXNjID0gYCAtICR7di5kZXNjcmlwdGlvbn1gO1xuXG4gICAgICAgICAgICBpZiAocHJlZml4Lmxlbmd0aCArIHRpdGxlLmxlbmd0aCArIGRlc2MubGVuZ3RoID49IHRoaXMub3V0LmNvbHVtbnMgfHwgdi5kZXNjcmlwdGlvbi5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgZGVzYyA9ICdcXG4nICsgd3JhcCh2LmRlc2NyaXB0aW9uLCB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAzLFxuICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgJHtwcmVmaXh9ICR7dGl0bGV9JHtjb2xvci5ncmF5KGRlc2MpfVxcbmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUodGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0UHJvbXB0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZS5zdHlsZSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUuY2xlYXI7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3IsXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZTtcbi8qKlxuICogVG9nZ2xlUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5hY3RpdmU9J25vJ10gQWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5hY3RpdmU9J29mZiddIEluYWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5cbmNsYXNzIFRvZ2dsZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLmFjdGl2ZSA9IG9wdHMuYWN0aXZlIHx8ICdvbic7XG4gICAgdGhpcy5pbmFjdGl2ZSA9IG9wdHMuaW5hY3RpdmUgfHwgJ29mZic7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHRydWUpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmRlYWN0aXZhdGUoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIHRoaXMuYWN0aXZhdGUoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmFjdGl2YXRlKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMudmFsdWUgPSAhdGhpcy52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gIXRoaXMudmFsdWU7XG4gICAgfSBlbHNlIGlmIChjID09PSAnMScpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzAnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gZmFsc2U7XG4gICAgfSBlbHNlIHJldHVybiB0aGlzLmJlbGwoKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksIHRoaXMudmFsdWUgPyB0aGlzLmluYWN0aXZlIDogY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmluYWN0aXZlKSwgY29sb3IuZ3JheSgnLycpLCB0aGlzLnZhbHVlID8gY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmFjdGl2ZSkgOiB0aGlzLmFjdGl2ZV0uam9pbignICcpO1xuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBUb2dnbGVQcm9tcHQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jbGFzcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICB0b2tlbixcbiAgICBkYXRlLFxuICAgIHBhcnRzLFxuICAgIGxvY2FsZXNcbiAgfSkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLmRhdGUgPSBkYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzIHx8IFt0aGlzXTtcbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzIHx8IHt9O1xuICB9XG5cbiAgdXAoKSB7fVxuXG4gIGRvd24oKSB7fVxuXG4gIG5leHQoKSB7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHRoaXMucGFydHMuaW5kZXhPZih0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5maW5kKChwYXJ0LCBpZHgpID0+IGlkeCA+IGN1cnJlbnRJZHggJiYgcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge31cblxuICBwcmV2KCkge1xuICAgIGxldCBwYXJ0cyA9IFtdLmNvbmNhdCh0aGlzLnBhcnRzKS5yZXZlcnNlKCk7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHBhcnRzLmluZGV4T2YodGhpcyk7XG4gICAgcmV0dXJuIHBhcnRzLmZpbmQoKHBhcnQsIGlkeCkgPT4gaWR4ID4gY3VycmVudElkeCAmJiBwYXJ0IGluc3RhbmNlb2YgRGF0ZVBhcnQpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXRlUGFydDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBNZXJpZGllbSBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnMoKHRoaXMuZGF0ZS5nZXRIb3VycygpICsgMTIpICUgMjQpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLnVwKCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgbWVyaWRpZW0gPSB0aGlzLmRhdGUuZ2V0SG91cnMoKSA+IDEyID8gJ3BtJyA6ICdhbSc7XG4gICAgcmV0dXJuIC9cXEEvLnRlc3QodGhpcy50b2tlbikgPyBtZXJpZGllbS50b1VwcGVyQ2FzZSgpIDogbWVyaWRpZW07XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1lcmlkaWVtOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNvbnN0IHBvcyA9IG4gPT4ge1xuICBuID0gbiAlIDEwO1xuICByZXR1cm4gbiA9PT0gMSA/ICdzdCcgOiBuID09PSAyID8gJ25kJyA6IG4gPT09IDMgPyAncmQnIDogJ3RoJztcbn07XG5cbmNsYXNzIERheSBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RGF0ZSh0aGlzLmRhdGUuZ2V0RGF0ZSgpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHRoaXMuZGF0ZS5nZXREYXRlKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgZGF0ZSA9IHRoaXMuZGF0ZS5nZXREYXRlKCk7XG4gICAgbGV0IGRheSA9IHRoaXMuZGF0ZS5nZXREYXkoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbiA9PT0gJ0REJyA/IFN0cmluZyhkYXRlKS5wYWRTdGFydCgyLCAnMCcpIDogdGhpcy50b2tlbiA9PT0gJ0RvJyA/IGRhdGUgKyBwb3MoZGF0ZSkgOiB0aGlzLnRva2VuID09PSAnZCcgPyBkYXkgKyAxIDogdGhpcy50b2tlbiA9PT0gJ2RkZCcgPyB0aGlzLmxvY2FsZXMud2Vla2RheXNTaG9ydFtkYXldIDogdGhpcy50b2tlbiA9PT0gJ2RkZGQnID8gdGhpcy5sb2NhbGVzLndlZWtkYXlzW2RheV0gOiBkYXRlO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgSG91cnMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHRoaXMuZGF0ZS5nZXRIb3VycygpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRIb3Vycyh0aGlzLmRhdGUuZ2V0SG91cnMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgaG91cnMgPSB0aGlzLmRhdGUuZ2V0SG91cnMoKTtcbiAgICBpZiAoL2gvLnRlc3QodGhpcy50b2tlbikpIGhvdXJzID0gaG91cnMgJSAxMiB8fCAxMjtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKGhvdXJzKS5wYWRTdGFydCgyLCAnMCcpIDogaG91cnM7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhvdXJzOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1pbGxpc2Vjb25kcyBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbGxpc2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC10aGlzLnRva2VuLmxlbmd0aCkpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBTdHJpbmcodGhpcy5kYXRlLmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCg0LCAnMCcpLnN1YnN0cigwLCB0aGlzLnRva2VuLmxlbmd0aCk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1pbGxpc2Vjb25kczsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBNaW51dGVzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNaW51dGVzKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXModGhpcy5kYXRlLmdldE1pbnV0ZXMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtID0gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKG0pLnBhZFN0YXJ0KDIsICcwJykgOiBtO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNaW51dGVzOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1vbnRoIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNb250aCh0aGlzLmRhdGUuZ2V0TW9udGgoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TW9udGgodGhpcy5kYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHZhbCA9IHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSAtIDE7XG4gICAgdGhpcy5kYXRlLnNldE1vbnRoKHZhbCA8IDAgPyAwIDogdmFsKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtb250aCA9IHRoaXMuZGF0ZS5nZXRNb250aCgpO1xuICAgIGxldCB0bCA9IHRoaXMudG9rZW4ubGVuZ3RoO1xuICAgIHJldHVybiB0bCA9PT0gMiA/IFN0cmluZyhtb250aCArIDEpLnBhZFN0YXJ0KDIsICcwJykgOiB0bCA9PT0gMyA/IHRoaXMubG9jYWxlcy5tb250aHNTaG9ydFttb250aF0gOiB0bCA9PT0gNCA/IHRoaXMubG9jYWxlcy5tb250aHNbbW9udGhdIDogU3RyaW5nKG1vbnRoICsgMSk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRoOyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIFNlY29uZHMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy5kYXRlLnNldFNlY29uZHModGhpcy5kYXRlLmdldFNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC0yKSkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHMgPSB0aGlzLmRhdGUuZ2V0U2Vjb25kcygpO1xuICAgIHJldHVybiB0aGlzLnRva2VuLmxlbmd0aCA+IDEgPyBTdHJpbmcocykucGFkU3RhcnQoMiwgJzAnKSA6IHM7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlY29uZHM7IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgWWVhciBleHRlbmRzIERhdGVQYXJ0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEZ1bGxZZWFyKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodmFsLnN1YnN0cigtNCkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHllYXIgPSBTdHJpbmcodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID09PSAyID8geWVhci5zdWJzdHIoLTIpIDogeWVhcjtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gWWVhcjsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBEYXRlUGFydDogcmVxdWlyZSgnLi9kYXRlcGFydCcpLFxuICBNZXJpZGllbTogcmVxdWlyZSgnLi9tZXJpZGllbScpLFxuICBEYXk6IHJlcXVpcmUoJy4vZGF5JyksXG4gIEhvdXJzOiByZXF1aXJlKCcuL2hvdXJzJyksXG4gIE1pbGxpc2Vjb25kczogcmVxdWlyZSgnLi9taWxsaXNlY29uZHMnKSxcbiAgTWludXRlczogcmVxdWlyZSgnLi9taW51dGVzJyksXG4gIE1vbnRoOiByZXF1aXJlKCcuL21vbnRoJyksXG4gIFNlY29uZHM6IHJlcXVpcmUoJy4vc2Vjb25kcycpLFxuICBZZWFyOiByZXF1aXJlKCcuL3llYXInKVxufTsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywga2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKF9uZXh0LCBfdGhyb3cpOyB9IH1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIHNlbGYgPSB0aGlzLCBhcmdzID0gYXJndW1lbnRzOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2YXIgZ2VuID0gZm4uYXBwbHkoc2VsZiwgYXJncyk7IGZ1bmN0aW9uIF9uZXh0KHZhbHVlKSB7IGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIHZhbHVlKTsgfSBmdW5jdGlvbiBfdGhyb3coZXJyKSB7IGFzeW5jR2VuZXJhdG9yU3RlcChnZW4sIHJlc29sdmUsIHJlamVjdCwgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBlcnIpOyB9IF9uZXh0KHVuZGVmaW5lZCk7IH0pOyB9OyB9XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCcuLi91dGlsJyksXG4gICAgICBzdHlsZSA9IF9yZXF1aXJlLnN0eWxlLFxuICAgICAgY2xlYXIgPSBfcmVxdWlyZS5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZS5maWd1cmVzO1xuXG5jb25zdCBfcmVxdWlyZTIgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3I7XG5cbmNvbnN0IF9yZXF1aXJlMyA9IHJlcXVpcmUoJy4uL2RhdGVwYXJ0cycpLFxuICAgICAgRGF0ZVBhcnQgPSBfcmVxdWlyZTMuRGF0ZVBhcnQsXG4gICAgICBNZXJpZGllbSA9IF9yZXF1aXJlMy5NZXJpZGllbSxcbiAgICAgIERheSA9IF9yZXF1aXJlMy5EYXksXG4gICAgICBIb3VycyA9IF9yZXF1aXJlMy5Ib3VycyxcbiAgICAgIE1pbGxpc2Vjb25kcyA9IF9yZXF1aXJlMy5NaWxsaXNlY29uZHMsXG4gICAgICBNaW51dGVzID0gX3JlcXVpcmUzLk1pbnV0ZXMsXG4gICAgICBNb250aCA9IF9yZXF1aXJlMy5Nb250aCxcbiAgICAgIFNlY29uZHMgPSBfcmVxdWlyZTMuU2Vjb25kcyxcbiAgICAgIFllYXIgPSBfcmVxdWlyZTMuWWVhcjtcblxuY29uc3QgcmVnZXggPSAvXFxcXCguKXxcIigoPzpcXFxcW1wiXFxcXF18W15cIl0pKylcInwoRFtEb10/fGR7Myw0fXxkKXwoTXsxLDR9KXwoWVkoPzpZWSk/KXwoW2FBXSl8KFtIaF17MSwyfSl8KG17MSwyfSl8KHN7MSwyfSl8KFN7MSw0fSl8Li9nO1xuY29uc3QgcmVnZXhHcm91cHMgPSB7XG4gIDE6ICh7XG4gICAgdG9rZW5cbiAgfSkgPT4gdG9rZW4ucmVwbGFjZSgvXFxcXCguKS9nLCAnJDEnKSxcbiAgMjogb3B0cyA9PiBuZXcgRGF5KG9wdHMpLFxuICAvLyBEYXkgLy8gVE9ET1xuICAzOiBvcHRzID0+IG5ldyBNb250aChvcHRzKSxcbiAgLy8gTW9udGhcbiAgNDogb3B0cyA9PiBuZXcgWWVhcihvcHRzKSxcbiAgLy8gWWVhclxuICA1OiBvcHRzID0+IG5ldyBNZXJpZGllbShvcHRzKSxcbiAgLy8gQU0vUE0gLy8gVE9ETyAoc3BlY2lhbClcbiAgNjogb3B0cyA9PiBuZXcgSG91cnMob3B0cyksXG4gIC8vIEhvdXJzXG4gIDc6IG9wdHMgPT4gbmV3IE1pbnV0ZXMob3B0cyksXG4gIC8vIE1pbnV0ZXNcbiAgODogb3B0cyA9PiBuZXcgU2Vjb25kcyhvcHRzKSxcbiAgLy8gU2Vjb25kc1xuICA5OiBvcHRzID0+IG5ldyBNaWxsaXNlY29uZHMob3B0cykgLy8gRnJhY3Rpb25hbCBzZWNvbmRzXG5cbn07XG5jb25zdCBkZmx0TG9jYWxlcyA9IHtcbiAgbW9udGhzOiAnSmFudWFyeSxGZWJydWFyeSxNYXJjaCxBcHJpbCxNYXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlcicuc3BsaXQoJywnKSxcbiAgbW9udGhzU2hvcnQ6ICdKYW4sRmViLE1hcixBcHIsTWF5LEp1bixKdWwsQXVnLFNlcCxPY3QsTm92LERlYycuc3BsaXQoJywnKSxcbiAgd2Vla2RheXM6ICdTdW5kYXksTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheScuc3BsaXQoJywnKSxcbiAgd2Vla2RheXNTaG9ydDogJ1N1bixNb24sVHVlLFdlZCxUaHUsRnJpLFNhdCcuc3BsaXQoJywnKVxufTtcbi8qKlxuICogRGF0ZVByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5tYXNrXSBUaGUgZm9ybWF0IG1hc2tcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0cy5sb2NhbGVzXSBUaGUgZGF0ZSBsb2NhbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZXJyb3JdIFRoZSBlcnJvciBtZXNzYWdlIHNob3duIG9uIGludmFsaWQgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgc3VibWl0dGVkIHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5jbGFzcyBEYXRlUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMudHlwZWQgPSAnJztcbiAgICB0aGlzLmxvY2FsZXMgPSBPYmplY3QuYXNzaWduKGRmbHRMb2NhbGVzLCBvcHRzLmxvY2FsZXMpO1xuICAgIHRoaXMuX2RhdGUgPSBvcHRzLmluaXRpYWwgfHwgbmV3IERhdGUoKTtcbiAgICB0aGlzLmVycm9yTXNnID0gb3B0cy5lcnJvciB8fCAnUGxlYXNlIEVudGVyIEEgVmFsaWQgVmFsdWUnO1xuXG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcblxuICAgIHRoaXMubWFzayA9IG9wdHMubWFzayB8fCAnWVlZWS1NTS1ERCBISDptbTpzcyc7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGU7XG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGUpIHtcbiAgICBpZiAoZGF0ZSkgdGhpcy5fZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHNldCBtYXNrKG1hc2spIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMucGFydHMgPSBbXTtcblxuICAgIHdoaWxlIChyZXN1bHQgPSByZWdleC5leGVjKG1hc2spKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZXN1bHQuc2hpZnQoKTtcbiAgICAgIGxldCBpZHggPSByZXN1bHQuZmluZEluZGV4KGdyID0+IGdyICE9IG51bGwpO1xuICAgICAgdGhpcy5wYXJ0cy5wdXNoKGlkeCBpbiByZWdleEdyb3VwcyA/IHJlZ2V4R3JvdXBzW2lkeF0oe1xuICAgICAgICB0b2tlbjogcmVzdWx0W2lkeF0gfHwgbWF0Y2gsXG4gICAgICAgIGRhdGU6IHRoaXMuZGF0ZSxcbiAgICAgICAgcGFydHM6IHRoaXMucGFydHMsXG4gICAgICAgIGxvY2FsZXM6IHRoaXMubG9jYWxlc1xuICAgICAgfSkgOiByZXN1bHRbaWR4XSB8fCBtYXRjaCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcnRzID0gdGhpcy5wYXJ0cy5yZWR1Y2UoKGFyciwgaSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBpID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYXJyW2Fyci5sZW5ndGggLSAxXSA9PT0gJ3N0cmluZycpIGFyclthcnIubGVuZ3RoIC0gMV0gKz0gaTtlbHNlIGFyci5wdXNoKGkpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbXSk7XG4gICAgdGhpcy5wYXJ0cy5zcGxpY2UoMCk7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKC4uLnBhcnRzKTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLnR5cGVkID0gJyc7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuZmluZEluZGV4KHAgPT4gcCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgbGV0IHZhbGlkID0geWllbGQgX3RoaXMudmFsaWRhdG9yKF90aGlzLnZhbHVlKTtcblxuICAgICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgX3RoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgICAgdmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgeWllbGQgX3RoaXMyLnZhbGlkYXRlKCk7XG5cbiAgICAgIGlmIChfdGhpczIuZXJyb3IpIHtcbiAgICAgICAgX3RoaXMyLmNvbG9yID0gJ3JlZCc7XG5cbiAgICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgICBfdGhpczIucmVuZGVyKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpczIuZG9uZSA9IHRydWU7XG4gICAgICBfdGhpczIuYWJvcnRlZCA9IGZhbHNlO1xuXG4gICAgICBfdGhpczIuZmlyZSgpO1xuXG4gICAgICBfdGhpczIucmVuZGVyKCk7XG5cbiAgICAgIF90aGlzMi5vdXQud3JpdGUoJ1xcbicpO1xuXG4gICAgICBfdGhpczIuY2xvc2UoKTtcbiAgICB9KSgpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnVwKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLmRvd24oKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBsZXQgcHJldiA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnByZXYoKTtcbiAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuaW5kZXhPZihwcmV2KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0ubmV4dCgpO1xuICAgIGlmIChuZXh0ID09IG51bGwpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5wYXJ0cy5pbmRleE9mKG5leHQpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLm5leHQoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IobmV4dCA/IHRoaXMucGFydHMuaW5kZXhPZihuZXh0KSA6IHRoaXMucGFydHMuZmluZEluZGV4KHBhcnQgPT4gcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYykge1xuICAgIGlmICgvXFxkLy50ZXN0KGMpKSB7XG4gICAgICB0aGlzLnR5cGVkICs9IGM7XG4gICAgICB0aGlzLnBhcnRzW3RoaXMuY3Vyc29yXS5zZXRUbyh0aGlzLnR5cGVkKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTsgLy8gUHJpbnQgcHJvbXB0XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcihmYWxzZSksIHRoaXMucGFydHMucmVkdWNlKChhcnIsIHAsIGlkeCkgPT4gYXJyLmNvbmNhdChpZHggPT09IHRoaXMuY3Vyc29yICYmICF0aGlzLmRvbmUgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHAudG9TdHJpbmcoKSkgOiBwKSwgW10pLmpvaW4oJycpXS5qb2luKCcgJyk7IC8vIFByaW50IGVycm9yXG5cbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5vdXRwdXRUZXh0ICs9IHRoaXMuZXJyb3JNc2cuc3BsaXQoJ1xcbicpLnJlZHVjZSgoYSwgbCwgaSkgPT4gYSArIGBcXG4ke2kgPyBgIGAgOiBmaWd1cmVzLnBvaW50ZXJTbWFsbH0gJHtjb2xvci5yZWQoKS5pdGFsaWMobCl9YCwgYGApO1xuICAgIH1cblxuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBEYXRlUHJvbXB0OyIsIlwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgY3Vyc29yID0gX3JlcXVpcmUuY3Vyc29yLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZTtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBmaWd1cmVzID0gX3JlcXVpcmUyLmZpZ3VyZXMsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlMi5jbGVhcixcbiAgICAgIGxpbmVzID0gX3JlcXVpcmUyLmxpbmVzO1xuXG5jb25zdCBpc051bWJlciA9IC9bMC05XS87XG5cbmNvbnN0IGlzRGVmID0gYW55ID0+IGFueSAhPT0gdW5kZWZpbmVkO1xuXG5jb25zdCByb3VuZCA9IChudW1iZXIsIHByZWNpc2lvbikgPT4ge1xuICBsZXQgZmFjdG9yID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBNYXRoLnJvdW5kKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59O1xuLyoqXG4gKiBOdW1iZXJQcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zdHlsZT0nZGVmYXVsdCddIFJlbmRlciBzdHlsZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5tYXg9K0luZmluaXR5XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5taW49LUluZmluaXR5XSBNaW4gdmFsdWVcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuZmxvYXQ9ZmFsc2VdIFBhcnNlIGlucHV0IGFzIGZsb2F0c1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLnJvdW5kPTJdIFJvdW5kIGZsb2F0cyB0byB4IGRlY2ltYWxzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMuaW5jcmVtZW50PTFdIE51bWJlciB0byBpbmNyZW1lbnQgYnkgd2hlbiB1c2luZyBhcnJvdy1rZXlzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy52YWxpZGF0ZV0gVmFsaWRhdGUgZnVuY3Rpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVycm9yXSBUaGUgaW52YWxpZCBlcnJvciBsYWJlbFxuICovXG5cblxuY2xhc3MgTnVtYmVyUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBzdHlsZS5yZW5kZXIob3B0cy5zdHlsZSk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gaXNEZWYob3B0cy5pbml0aWFsKSA/IG9wdHMuaW5pdGlhbCA6ICcnO1xuICAgIHRoaXMuZmxvYXQgPSAhIW9wdHMuZmxvYXQ7XG4gICAgdGhpcy5yb3VuZCA9IG9wdHMucm91bmQgfHwgMjtcbiAgICB0aGlzLmluYyA9IG9wdHMuaW5jcmVtZW50IHx8IDE7XG4gICAgdGhpcy5taW4gPSBpc0RlZihvcHRzLm1pbikgPyBvcHRzLm1pbiA6IC1JbmZpbml0eTtcbiAgICB0aGlzLm1heCA9IGlzRGVmKG9wdHMubWF4KSA/IG9wdHMubWF4IDogSW5maW5pdHk7XG4gICAgdGhpcy5lcnJvck1zZyA9IG9wdHMuZXJyb3IgfHwgYFBsZWFzZSBFbnRlciBBIFZhbGlkIFZhbHVlYDtcblxuICAgIHRoaXMudmFsaWRhdG9yID0gb3B0cy52YWxpZGF0ZSB8fCAoKCkgPT4gdHJ1ZSk7XG5cbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy5sYXN0SGl0ID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdiAhPT0gMCkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gY29sb3IuZ3JheSh0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7dGhpcy5pbml0aWFsfWApKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gYGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSB0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7cm91bmQodiwgdGhpcy5yb3VuZCl9YCk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHJvdW5kKHYsIHRoaXMucm91bmQpO1xuICAgIH1cblxuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHBhcnNlKHgpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdCA/IHBhcnNlRmxvYXQoeCkgOiBwYXJzZUludCh4KTtcbiAgfVxuXG4gIHZhbGlkKGMpIHtcbiAgICByZXR1cm4gYyA9PT0gYC1gIHx8IGMgPT09IGAuYCAmJiB0aGlzLmZsb2F0IHx8IGlzTnVtYmVyLnRlc3QoYyk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIGxldCB4ID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0geCAhPT0gYGAgPyB4IDogdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoYFxcbmApO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qICgpIHtcbiAgICAgIGxldCB2YWxpZCA9IHlpZWxkIF90aGlzLnZhbGlkYXRvcihfdGhpcy52YWx1ZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgdmFsaWQgPT09IGBzdHJpbmdgKSB7XG4gICAgICAgIF90aGlzLmVycm9yTXNnID0gdmFsaWQ7XG4gICAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmVycm9yID0gIXZhbGlkO1xuICAgIH0pKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoZnVuY3Rpb24qICgpIHtcbiAgICAgIHlpZWxkIF90aGlzMi52YWxpZGF0ZSgpO1xuXG4gICAgICBpZiAoX3RoaXMyLmVycm9yKSB7XG4gICAgICAgIF90aGlzMi5jb2xvciA9IGByZWRgO1xuXG4gICAgICAgIF90aGlzMi5maXJlKCk7XG5cbiAgICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHggPSBfdGhpczIudmFsdWU7XG4gICAgICBfdGhpczIudmFsdWUgPSB4ICE9PSBgYCA/IHggOiBfdGhpczIuaW5pdGlhbDtcbiAgICAgIF90aGlzMi5kb25lID0gdHJ1ZTtcbiAgICAgIF90aGlzMi5hYm9ydGVkID0gZmFsc2U7XG4gICAgICBfdGhpczIuZXJyb3IgPSBmYWxzZTtcblxuICAgICAgX3RoaXMyLmZpcmUoKTtcblxuICAgICAgX3RoaXMyLnJlbmRlcigpO1xuXG4gICAgICBfdGhpczIub3V0LndyaXRlKGBcXG5gKTtcblxuICAgICAgX3RoaXMyLmNsb3NlKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMudHlwZWQgPSBgYDtcblxuICAgIGlmICh0aGlzLnZhbHVlID09PSAnJykge1xuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluIC0gdGhpcy5pbmM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmFsdWUgPj0gdGhpcy5tYXgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlICs9IHRoaXMuaW5jO1xuICAgIHRoaXMuY29sb3IgPSBgY3lhbmA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9IGBgO1xuXG4gICAgaWYgKHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW4gKyB0aGlzLmluYztcbiAgICB9XG5cbiAgICBpZiAodGhpcy52YWx1ZSA8PSB0aGlzLm1pbikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgLT0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGxldCB2YWwgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZSh2YWwgPSB2YWwuc2xpY2UoMCwgLTEpKSB8fCBgYDtcblxuICAgIGlmICh0aGlzLnZhbHVlICE9PSAnJyAmJiB0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWw7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkKGMpKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0SGl0ID4gMTAwMCkgdGhpcy50eXBlZCA9IGBgOyAvLyAxcyBlbGFwc2VkXG5cbiAgICB0aGlzLnR5cGVkICs9IGM7XG4gICAgdGhpcy5sYXN0SGl0ID0gbm93O1xuICAgIHRoaXMuY29sb3IgPSBgY3lhbmA7XG4gICAgaWYgKGMgPT09IGAuYCkgcmV0dXJuIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMudmFsdWUgPSBNYXRoLm1pbih0aGlzLnBhcnNlKHRoaXMudHlwZWQpLCB0aGlzLm1heCk7XG4gICAgaWYgKHRoaXMudmFsdWUgPiB0aGlzLm1heCkgdGhpcy52YWx1ZSA9IHRoaXMubWF4O1xuICAgIGlmICh0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLmZpcnN0UmVuZGVyKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXRFcnJvcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmRvd24obGluZXModGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykgLSAxKSArIGNsZWFyKHRoaXMub3V0cHV0RXJyb3IsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIH1cblxuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0RXJyb3IgPSAnJzsgLy8gUHJpbnQgcHJvbXB0XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLCAhdGhpcy5kb25lIHx8ICF0aGlzLmRvbmUgJiYgIXRoaXMucGxhY2Vob2xkZXIgPyBjb2xvclt0aGlzLmNvbG9yXSgpLnVuZGVybGluZSh0aGlzLnJlbmRlcmVkKSA6IHRoaXMucmVuZGVyZWRdLmpvaW4oYCBgKTsgLy8gUHJpbnQgZXJyb3JcblxuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLm91dHB1dEVycm9yICs9IHRoaXMuZXJyb3JNc2cuc3BsaXQoYFxcbmApLnJlZHVjZSgoYSwgbCwgaSkgPT4gYSArIGBcXG4ke2kgPyBgIGAgOiBmaWd1cmVzLnBvaW50ZXJTbWFsbH0gJHtjb2xvci5yZWQoKS5pdGFsaWMobCl9YCwgYGApO1xuICAgIH1cblxuICAgIHRoaXMub3V0LndyaXRlKGVyYXNlLmxpbmUgKyBjdXJzb3IudG8oMCkgKyB0aGlzLm91dHB1dFRleHQgKyBjdXJzb3Iuc2F2ZSArIHRoaXMub3V0cHV0RXJyb3IgKyBjdXJzb3IucmVzdG9yZSk7XG4gIH1cblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlclByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuY29uc3QgX3JlcXVpcmUgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBjdXJzb3IgPSBfcmVxdWlyZS5jdXJzb3I7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUyLmNsZWFyLFxuICAgICAgZmlndXJlcyA9IF9yZXF1aXJlMi5maWd1cmVzLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICB3cmFwID0gX3JlcXVpcmUyLndyYXAsXG4gICAgICBlbnRyaWVzVG9EaXNwbGF5ID0gX3JlcXVpcmUyLmVudHJpZXNUb0Rpc3BsYXk7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuXG5cbmNsYXNzIE11bHRpc2VsZWN0UHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgLSc7XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IG9wdHMubWluO1xuICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5tYXhDaG9pY2VzID0gb3B0cy5tYXg7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBvcHRzLmluc3RydWN0aW9ucztcbiAgICB0aGlzLm9wdGlvbnNQZXJQYWdlID0gb3B0cy5vcHRpb25zUGVyUGFnZSB8fCAxMDtcbiAgICB0aGlzLnZhbHVlID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpIGNoID0ge1xuICAgICAgICB0aXRsZTogY2gsXG4gICAgICAgIHZhbHVlOiBpZHhcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGNoICYmIGNoLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG5cbiAgICBpZiAoIW9wdHMub3ZlcnJpZGVSZW5kZXIpIHtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZS5tYXAodiA9PiAhdi5zZWxlY3RlZCk7XG4gICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZWxlY3RlZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5maWx0ZXIodiA9PiB2LnNlbGVjdGVkKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmZpbHRlcihlID0+IGUuc2VsZWN0ZWQpO1xuXG4gICAgaWYgKHRoaXMubWluU2VsZWN0ZWQgJiYgc2VsZWN0ZWQubGVuZ3RoIDwgdGhpcy5taW5TZWxlY3RlZCkge1xuICAgICAgdGhpcy5zaG93TWluRXJyb3IgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLmN1cnNvciA9ICh0aGlzLmN1cnNvciArIDEpICUgdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkge1xuICAgICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yLS07XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBoYW5kbGVTcGFjZVRvZ2dsZSgpIHtcbiAgICBjb25zdCB2ID0gdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl07XG5cbiAgICBpZiAodi5zZWxlY3RlZCkge1xuICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2UgaWYgKHYuZGlzYWJsZWQgfHwgdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVBbGwoKSB7XG4gICAgaWYgKHRoaXMubWF4Q2hvaWNlcyAhPT0gdW5kZWZpbmVkIHx8IHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U2VsZWN0ZWQgPSAhdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQ7XG4gICAgdGhpcy52YWx1ZS5maWx0ZXIodiA9PiAhdi5kaXNhYmxlZCkuZm9yRWFjaCh2ID0+IHYuc2VsZWN0ZWQgPSBuZXdTZWxlY3RlZCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy5oYW5kbGVTcGFjZVRvZ2dsZSgpO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJ2EnKSB7XG4gICAgICB0aGlzLnRvZ2dsZUFsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmluc3RydWN0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdHJ1Y3Rpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnXFxuSW5zdHJ1Y3Rpb25zOlxcbicgKyBgICAgICR7ZmlndXJlcy5hcnJvd1VwfS8ke2ZpZ3VyZXMuYXJyb3dEb3dufTogSGlnaGxpZ2h0IG9wdGlvblxcbmAgKyBgICAgICR7ZmlndXJlcy5hcnJvd0xlZnR9LyR7ZmlndXJlcy5hcnJvd1JpZ2h0fS9bc3BhY2VdOiBUb2dnbGUgc2VsZWN0aW9uXFxuYCArICh0aGlzLm1heENob2ljZXMgPT09IHVuZGVmaW5lZCA/IGAgICAgYTogVG9nZ2xlIGFsbFxcbmAgOiAnJykgKyBgICAgIGVudGVyL3JldHVybjogQ29tcGxldGUgYW5zd2VyYDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJPcHRpb24oY3Vyc29yLCB2LCBpLCBhcnJvd0luZGljYXRvcikge1xuICAgIGNvbnN0IHByZWZpeCA9ICh2LnNlbGVjdGVkID8gY29sb3IuZ3JlZW4oZmlndXJlcy5yYWRpb09uKSA6IGZpZ3VyZXMucmFkaW9PZmYpICsgJyAnICsgYXJyb3dJbmRpY2F0b3IgKyAnICc7XG4gICAgbGV0IHRpdGxlLCBkZXNjO1xuXG4gICAgaWYgKHYuZGlzYWJsZWQpIHtcbiAgICAgIHRpdGxlID0gY3Vyc29yID09PSBpID8gY29sb3IuZ3JheSgpLnVuZGVybGluZSh2LnRpdGxlKSA6IGNvbG9yLnN0cmlrZXRocm91Z2goKS5ncmF5KHYudGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuXG4gICAgICBpZiAoY3Vyc29yID09PSBpICYmIHYuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgZGVzYyA9IGAgLSAke3YuZGVzY3JpcHRpb259YDtcblxuICAgICAgICBpZiAocHJlZml4Lmxlbmd0aCArIHRpdGxlLmxlbmd0aCArIGRlc2MubGVuZ3RoID49IHRoaXMub3V0LmNvbHVtbnMgfHwgdi5kZXNjcmlwdGlvbi5zcGxpdCgvXFxyP1xcbi8pLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBkZXNjID0gJ1xcbicgKyB3cmFwKHYuZGVzY3JpcHRpb24sIHtcbiAgICAgICAgICAgIG1hcmdpbjogcHJlZml4Lmxlbmd0aCxcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ICsgdGl0bGUgKyBjb2xvci5ncmF5KGRlc2MgfHwgJycpO1xuICB9IC8vIHNoYXJlZCB3aXRoIGF1dG9jb21wbGV0ZU11bHRpc2VsZWN0XG5cblxuICBwYWdpbmF0ZU9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNvbG9yLnJlZCgnTm8gbWF0Y2hlcyBmb3IgdGhpcyBxdWVyeS4nKTtcbiAgICB9XG5cbiAgICBsZXQgX2VudHJpZXNUb0Rpc3BsYXkgPSBlbnRyaWVzVG9EaXNwbGF5KHRoaXMuY3Vyc29yLCBvcHRpb25zLmxlbmd0aCwgdGhpcy5vcHRpb25zUGVyUGFnZSksXG4gICAgICAgIHN0YXJ0SW5kZXggPSBfZW50cmllc1RvRGlzcGxheS5zdGFydEluZGV4LFxuICAgICAgICBlbmRJbmRleCA9IF9lbnRyaWVzVG9EaXNwbGF5LmVuZEluZGV4O1xuXG4gICAgbGV0IHByZWZpeCxcbiAgICAgICAgc3R5bGVkT3B0aW9ucyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0SW5kZXg7IGkgPCBlbmRJbmRleDsgaSsrKSB7XG4gICAgICBpZiAoaSA9PT0gc3RhcnRJbmRleCAmJiBzdGFydEluZGV4ID4gMCkge1xuICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93VXA7XG4gICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IG9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHByZWZpeCA9IGZpZ3VyZXMuYXJyb3dEb3duO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJlZml4ID0gJyAnO1xuICAgICAgfVxuXG4gICAgICBzdHlsZWRPcHRpb25zLnB1c2godGhpcy5yZW5kZXJPcHRpb24odGhpcy5jdXJzb3IsIG9wdGlvbnNbaV0sIGksIHByZWZpeCkpO1xuICAgIH1cblxuICAgIHJldHVybiAnXFxuJyArIHN0eWxlZE9wdGlvbnMuam9pbignXFxuJyk7XG4gIH0gLy8gc2hhcmVkIHdpdGggYXV0b2NvbWxldGVNdWx0aXNlbGVjdFxuXG5cbiAgcmVuZGVyT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgaWYgKCF0aGlzLmRvbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlT3B0aW9ucyhvcHRpb25zKTtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJEb25lT3JJbnN0cnVjdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuZG9uZSkge1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubWFwKHYgPT4gdi50aXRsZSkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRwdXQgPSBbY29sb3IuZ3JheSh0aGlzLmhpbnQpLCB0aGlzLnJlbmRlckluc3RydWN0aW9ucygpXTtcblxuICAgIGlmICh0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgb3V0cHV0LnB1c2goY29sb3IueWVsbG93KHRoaXMud2FybikpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRwdXQuam9pbignICcpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7XG4gICAgc3VwZXIucmVuZGVyKCk7IC8vIHByaW50IHByb21wdFxuXG4gICAgbGV0IHByb21wdCA9IFtzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLCBjb2xvci5ib2xkKHRoaXMubXNnKSwgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSwgdGhpcy5yZW5kZXJEb25lT3JJbnN0cnVjdGlvbnMoKV0uam9pbignICcpO1xuXG4gICAgaWYgKHRoaXMuc2hvd01pbkVycm9yKSB7XG4gICAgICBwcm9tcHQgKz0gY29sb3IucmVkKGBZb3UgbXVzdCBzZWxlY3QgYSBtaW5pbXVtIG9mICR7dGhpcy5taW5TZWxlY3RlZH0gY2hvaWNlcy5gKTtcbiAgICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJvbXB0ICs9IHRoaXMucmVuZGVyT3B0aW9ucyh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLm91dC53cml0ZSh0aGlzLmNsZWFyICsgcHJvbXB0KTtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIocHJvbXB0LCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gTXVsdGlzZWxlY3RQcm9tcHQ7IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5cbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpLFxuICAgICAgZXJhc2UgPSBfcmVxdWlyZS5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3QgX3JlcXVpcmUyID0gcmVxdWlyZSgnLi4vdXRpbCcpLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlMi5jbGVhcixcbiAgICAgIGZpZ3VyZXMgPSBfcmVxdWlyZTIuZmlndXJlcyxcbiAgICAgIHdyYXAgPSBfcmVxdWlyZTIud3JhcCxcbiAgICAgIGVudHJpZXNUb0Rpc3BsYXkgPSBfcmVxdWlyZTIuZW50cmllc1RvRGlzcGxheTtcblxuY29uc3QgZ2V0VmFsID0gKGFyciwgaSkgPT4gYXJyW2ldICYmIChhcnJbaV0udmFsdWUgfHwgYXJyW2ldLnRpdGxlIHx8IGFycltpXSk7XG5cbmNvbnN0IGdldFRpdGxlID0gKGFyciwgaSkgPT4gYXJyW2ldICYmIChhcnJbaV0udGl0bGUgfHwgYXJyW2ldLnZhbHVlIHx8IGFycltpXSk7XG5cbmNvbnN0IGdldEluZGV4ID0gKGFyciwgdmFsT3JUaXRsZSkgPT4ge1xuICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoZWwgPT4gZWwudmFsdWUgPT09IHZhbE9yVGl0bGUgfHwgZWwudGl0bGUgPT09IHZhbE9yVGl0bGUpO1xuICByZXR1cm4gaW5kZXggPiAtMSA/IGluZGV4IDogdW5kZWZpbmVkO1xufTtcbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtBcnJheX0gb3B0cy5jaG9pY2VzIEFycmF5IG9mIGF1dG8tY29tcGxldGUgY2hvaWNlcyBvYmplY3RzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5zdWdnZXN0XSBGaWx0ZXIgZnVuY3Rpb24uIERlZmF1bHRzIHRvIHNvcnQgYnkgdGl0bGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5saW1pdD0xMF0gTWF4IG51bWJlciBvZiByZXN1bHRzIHRvIHNob3dcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5jdXJzb3I9MF0gQ3Vyc29yIHN0YXJ0IHBvc2l0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc3R5bGU9J2RlZmF1bHQnXSBSZW5kZXIgc3R5bGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5mYWxsYmFja10gRmFsbGJhY2sgbWVzc2FnZSAtIGluaXRpYWwgdG8gZGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmNsZWFyRmlyc3RdIFRoZSBmaXJzdCBFU0NBUEUga2V5cHJlc3Mgd2lsbCBjbGVhciB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLm5vTWF0Y2hlc10gVGhlIG5vIG1hdGNoZXMgZm91bmQgbGFiZWxcbiAqL1xuXG5cbmNsYXNzIEF1dG9jb21wbGV0ZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuc3VnZ2VzdCA9IG9wdHMuc3VnZ2VzdDtcbiAgICB0aGlzLmNob2ljZXMgPSBvcHRzLmNob2ljZXM7XG4gICAgdGhpcy5pbml0aWFsID0gdHlwZW9mIG9wdHMuaW5pdGlhbCA9PT0gJ251bWJlcicgPyBvcHRzLmluaXRpYWwgOiBnZXRJbmRleChvcHRzLmNob2ljZXMsIG9wdHMuaW5pdGlhbCk7XG4gICAgdGhpcy5zZWxlY3QgPSB0aGlzLmluaXRpYWwgfHwgb3B0cy5jdXJzb3IgfHwgMDtcbiAgICB0aGlzLmkxOG4gPSB7XG4gICAgICBub01hdGNoZXM6IG9wdHMubm9NYXRjaGVzIHx8ICdubyBtYXRjaGVzIGZvdW5kJ1xuICAgIH07XG4gICAgdGhpcy5mYWxsYmFjayA9IG9wdHMuZmFsbGJhY2sgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuY2xlYXJGaXJzdCA9IG9wdHMuY2xlYXJGaXJzdCB8fCBmYWxzZTtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gW107XG4gICAgdGhpcy5pbnB1dCA9ICcnO1xuICAgIHRoaXMubGltaXQgPSBvcHRzLmxpbWl0IHx8IDEwO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5yZW5kZXIgPSB0aGlzLnJlbmRlci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY29tcGxldGUgPSB0aGlzLmNvbXBsZXRlLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGVhciA9IGNsZWFyKCcnLCB0aGlzLm91dC5jb2x1bW5zKTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IGZhbGxiYWNrKGZiKSB7XG4gICAgdGhpcy5fZmIgPSBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYXJzZUludChmYikpID8gcGFyc2VJbnQoZmIpIDogZmI7XG4gIH1cblxuICBnZXQgZmFsbGJhY2soKSB7XG4gICAgbGV0IGNob2ljZTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX2ZiID09PSAnbnVtYmVyJykgY2hvaWNlID0gdGhpcy5jaG9pY2VzW3RoaXMuX2ZiXTtlbHNlIGlmICh0eXBlb2YgdGhpcy5fZmIgPT09ICdzdHJpbmcnKSBjaG9pY2UgPSB7XG4gICAgICB0aXRsZTogdGhpcy5fZmJcbiAgICB9O1xuICAgIHJldHVybiBjaG9pY2UgfHwgdGhpcy5fZmIgfHwge1xuICAgICAgdGl0bGU6IHRoaXMuaTE4bi5ub01hdGNoZXNcbiAgICB9O1xuICB9XG5cbiAgbW92ZVNlbGVjdChpKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBpO1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHRoaXMudmFsdWUgPSBnZXRWYWwodGhpcy5zdWdnZXN0aW9ucywgaSk7ZWxzZSB0aGlzLnZhbHVlID0gdGhpcy5mYWxsYmFjay52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIGNvbXBsZXRlKGNiKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKCkge1xuICAgICAgY29uc3QgcCA9IF90aGlzLmNvbXBsZXRpbmcgPSBfdGhpcy5zdWdnZXN0KF90aGlzLmlucHV0LCBfdGhpcy5jaG9pY2VzKTtcblxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB5aWVsZCBwO1xuICAgICAgaWYgKF90aGlzLmNvbXBsZXRpbmcgIT09IHApIHJldHVybjtcbiAgICAgIF90aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnMubWFwKChzLCBpLCBhcnIpID0+ICh7XG4gICAgICAgIHRpdGxlOiBnZXRUaXRsZShhcnIsIGkpLFxuICAgICAgICB2YWx1ZTogZ2V0VmFsKGFyciwgaSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBzLmRlc2NyaXB0aW9uXG4gICAgICB9KSk7XG4gICAgICBfdGhpcy5jb21wbGV0aW5nID0gZmFsc2U7XG4gICAgICBjb25zdCBsID0gTWF0aC5tYXgoc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSwgMCk7XG5cbiAgICAgIF90aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4obCwgX3RoaXMuc2VsZWN0KSk7XG5cbiAgICAgIGNiICYmIGNiKCk7XG4gICAgfSkoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICB0aGlzLmNvbXBsZXRlKCgpID0+IHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLmluaXRpYWwgIT09IHZvaWQgMCA/IHRoaXMuaW5pdGlhbCA6IDApO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICBpZiAodGhpcy5jbGVhckZpcnN0ICYmIHRoaXMuaW5wdXQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRvbmUgPSB0aGlzLmV4aXRlZCA9IHRydWU7XG4gICAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlyZSgpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZXhpdGVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgdGhpcy5hYm9ydGVkID0gdGhpcy5leGl0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMuaW5wdXQuc2xpY2UodGhpcy5jdXJzb3IpO1xuICAgIHRoaXMuaW5wdXQgPSBgJHtzMX0ke2N9JHtzMn1gO1xuICAgIHRoaXMuY3Vyc29yID0gczEubGVuZ3RoICsgMTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IgLSAxKTtcbiAgICBsZXQgczIgPSB0aGlzLmlucHV0LnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLmlucHV0ID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMuY29tcGxldGUodGhpcy5yZW5kZXIpO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IgLSAxO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkZWxldGVGb3J3YXJkKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciAqIHRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICBsZXQgczEgPSB0aGlzLmlucHV0LnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLmlucHV0LnNsaWNlKHRoaXMuY3Vyc29yICsgMSk7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZmlyc3QoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgLSAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgKyAxKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIH0gZWxzZSB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgKyAxKTtcblxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4odGhpcy5zZWxlY3QgKyB0aGlzLmxpbWl0LCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KE1hdGgubWF4KHRoaXMuc2VsZWN0IC0gdGhpcy5saW1pdCwgMCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLmN1cnNvciAtIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciAqIHRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGgpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMuY3Vyc29yICsgMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKHYsIGhvdmVyZWQsIGlzU3RhcnQsIGlzRW5kKSB7XG4gICAgbGV0IGRlc2M7XG4gICAgbGV0IHByZWZpeCA9IGlzU3RhcnQgPyBmaWd1cmVzLmFycm93VXAgOiBpc0VuZCA/IGZpZ3VyZXMuYXJyb3dEb3duIDogJyAnO1xuICAgIGxldCB0aXRsZSA9IGhvdmVyZWQgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICBwcmVmaXggPSAoaG92ZXJlZCA/IGNvbG9yLmN5YW4oZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuXG4gICAgaWYgKHYuZGVzY3JpcHRpb24pIHtcbiAgICAgIGRlc2MgPSBgIC0gJHt2LmRlc2NyaXB0aW9ufWA7XG5cbiAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1ucyB8fCB2LmRlc2NyaXB0aW9uLnNwbGl0KC9cXHI/XFxuLykubGVuZ3RoID4gMSkge1xuICAgICAgICBkZXNjID0gJ1xcbicgKyB3cmFwKHYuZGVzY3JpcHRpb24sIHtcbiAgICAgICAgICBtYXJnaW46IDMsXG4gICAgICAgICAgd2lkdGg6IHRoaXMub3V0LmNvbHVtbnNcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHByZWZpeCArICcgJyArIHRpdGxlICsgY29sb3IuZ3JheShkZXNjIHx8ICcnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO2Vsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICBsZXQgX2VudHJpZXNUb0Rpc3BsYXkgPSBlbnRyaWVzVG9EaXNwbGF5KHRoaXMuc2VsZWN0LCB0aGlzLmNob2ljZXMubGVuZ3RoLCB0aGlzLmxpbWl0KSxcbiAgICAgICAgc3RhcnRJbmRleCA9IF9lbnRyaWVzVG9EaXNwbGF5LnN0YXJ0SW5kZXgsXG4gICAgICAgIGVuZEluZGV4ID0gX2VudHJpZXNUb0Rpc3BsYXkuZW5kSW5kZXg7XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkLCB0aGlzLmV4aXRlZCksIGNvbG9yLmJvbGQodGhpcy5tc2cpLCBzdHlsZS5kZWxpbWl0ZXIodGhpcy5jb21wbGV0aW5nKSwgdGhpcy5kb25lICYmIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zZWxlY3RdID8gdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdF0udGl0bGUgOiB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5wdXQpXS5qb2luKCcgJyk7XG5cbiAgICBpZiAoIXRoaXMuZG9uZSkge1xuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLnN1Z2dlc3Rpb25zLnNsaWNlKHN0YXJ0SW5kZXgsIGVuZEluZGV4KS5tYXAoKGl0ZW0sIGkpID0+IHRoaXMucmVuZGVyT3B0aW9uKGl0ZW0sIHRoaXMuc2VsZWN0ID09PSBpICsgc3RhcnRJbmRleCwgaSA9PT0gMCAmJiBzdGFydEluZGV4ID4gMCwgaSArIHN0YXJ0SW5kZXggPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpKS5qb2luKCdcXG4nKTtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgXFxuYCArIChzdWdnZXN0aW9ucyB8fCBjb2xvci5ncmF5KHRoaXMuZmFsbGJhY2sudGl0bGUpKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b2NvbXBsZXRlUHJvbXB0OyIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlLmN1cnNvcjtcblxuY29uc3QgTXVsdGlzZWxlY3RQcm9tcHQgPSByZXF1aXJlKCcuL211bHRpc2VsZWN0Jyk7XG5cbmNvbnN0IF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIGNsZWFyID0gX3JlcXVpcmUyLmNsZWFyLFxuICAgICAgc3R5bGUgPSBfcmVxdWlyZTIuc3R5bGUsXG4gICAgICBmaWd1cmVzID0gX3JlcXVpcmUyLmZpZ3VyZXM7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICovXG5cblxuY2xhc3MgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQgZXh0ZW5kcyBNdWx0aXNlbGVjdFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIG9wdHMub3ZlcnJpZGVSZW5kZXIgPSB0cnVlO1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLmN1cnNvciA9ICh0aGlzLmN1cnNvciArIDEpICUgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3ItLTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cigwLCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpIHtcbiAgICBjb25zdCBjdXJyZW50SGlnaGxpZ2h0ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy52YWx1ZS5maWx0ZXIodiA9PiB7XG4gICAgICBpZiAodGhpcy5pbnB1dFZhbHVlKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygdi50aXRsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBpZiAodi50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2LnZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGlmICh2LnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IG5ld0hpZ2hsaWdodEluZGV4ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmluZEluZGV4KHYgPT4gdiA9PT0gY3VycmVudEhpZ2hsaWdodCk7XG4gICAgdGhpcy5jdXJzb3IgPSBuZXdIaWdobGlnaHRJbmRleCA8IDAgPyAwIDogbmV3SGlnaGxpZ2h0SW5kZXg7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGhhbmRsZVNwYWNlVG9nZ2xlKCkge1xuICAgIGNvbnN0IHYgPSB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl07XG5cbiAgICBpZiAodi5zZWxlY3RlZCkge1xuICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9IGVsc2UgaWYgKHYuZGlzYWJsZWQgfHwgdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5sZW5ndGggPj0gdGhpcy5tYXhDaG9pY2VzKSB7XG4gICAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVJbnB1dENoYW5nZShjKSB7XG4gICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlICsgYztcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSB7XG4gICAgICB0aGlzLmhhbmRsZVNwYWNlVG9nZ2xlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlSW5wdXRDaGFuZ2UoYyk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmluc3RydWN0aW9ucyA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdHJ1Y3Rpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0cnVjdGlvbnM7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgXG5JbnN0cnVjdGlvbnM6XG4gICAgJHtmaWd1cmVzLmFycm93VXB9LyR7ZmlndXJlcy5hcnJvd0Rvd259OiBIaWdobGlnaHQgb3B0aW9uXG4gICAgJHtmaWd1cmVzLmFycm93TGVmdH0vJHtmaWd1cmVzLmFycm93UmlnaHR9L1tzcGFjZV06IFRvZ2dsZSBzZWxlY3Rpb25cbiAgICBbYSxiLGNdL2RlbGV0ZTogRmlsdGVyIGNob2ljZXNcbiAgICBlbnRlci9yZXR1cm46IENvbXBsZXRlIGFuc3dlclxuYDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJDdXJyZW50SW5wdXQoKSB7XG4gICAgcmV0dXJuIGBcbkZpbHRlcmVkIHJlc3VsdHMgZm9yOiAke3RoaXMuaW5wdXRWYWx1ZSA/IHRoaXMuaW5wdXRWYWx1ZSA6IGNvbG9yLmdyYXkoJ0VudGVyIHNvbWV0aGluZyB0byBmaWx0ZXInKX1cXG5gO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKGN1cnNvciwgdiwgaSkge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAodi5kaXNhYmxlZCkgdGl0bGUgPSBjdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7ZWxzZSB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgIHJldHVybiAodi5zZWxlY3RlZCA/IGNvbG9yLmdyZWVuKGZpZ3VyZXMucmFkaW9PbikgOiBmaWd1cmVzLnJhZGlvT2ZmKSArICcgICcgKyB0aXRsZTtcbiAgfVxuXG4gIHJlbmRlckRvbmVPckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZS5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKS5tYXAodiA9PiB2LnRpdGxlKS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IFtjb2xvci5ncmF5KHRoaXMuaGludCksIHRoaXMucmVuZGVySW5zdHJ1Y3Rpb25zKCksIHRoaXMucmVuZGVyQ3VycmVudElucHV0KCldO1xuXG4gICAgaWYgKHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAmJiB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uZGlzYWJsZWQpIHtcbiAgICAgIG91dHB1dC5wdXNoKGNvbG9yLnllbGxvdyh0aGlzLndhcm4pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIHN1cGVyLnJlbmRlcigpOyAvLyBwcmludCBwcm9tcHRcblxuICAgIGxldCBwcm9tcHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcihmYWxzZSksIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKCldLmpvaW4oJyAnKTtcblxuICAgIGlmICh0aGlzLnNob3dNaW5FcnJvcikge1xuICAgICAgcHJvbXB0ICs9IGNvbG9yLnJlZChgWW91IG11c3Qgc2VsZWN0IGEgbWluaW11bSBvZiAke3RoaXMubWluU2VsZWN0ZWR9IGNob2ljZXMuYCk7XG4gICAgICB0aGlzLnNob3dNaW5FcnJvciA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByb21wdCArPSB0aGlzLnJlbmRlck9wdGlvbnModGhpcy5maWx0ZXJlZE9wdGlvbnMpO1xuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuXG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuXG5jb25zdCBfcmVxdWlyZSA9IHJlcXVpcmUoJy4uL3V0aWwnKSxcbiAgICAgIHN0eWxlID0gX3JlcXVpcmUuc3R5bGUsXG4gICAgICBjbGVhciA9IF9yZXF1aXJlLmNsZWFyO1xuXG5jb25zdCBfcmVxdWlyZTIgPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyksXG4gICAgICBlcmFzZSA9IF9yZXF1aXJlMi5lcmFzZSxcbiAgICAgIGN1cnNvciA9IF9yZXF1aXJlMi5jdXJzb3I7XG4vKipcbiAqIENvbmZpcm1Qcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZSAodHJ1ZS9mYWxzZSlcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnllc10gVGhlIFwiWWVzXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy55ZXNPcHRpb25dIFRoZSBcIlllc1wiIG9wdGlvbiB3aGVuIGNob29zaW5nIGJldHdlZW4geWVzL25vXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9dIFRoZSBcIk5vXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ub09wdGlvbl0gVGhlIFwiTm9cIiBvcHRpb24gd2hlbiBjaG9vc2luZyBiZXR3ZWVuIHllcy9ub1xuICovXG5cblxuY2xhc3MgQ29uZmlybVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSBvcHRzLmluaXRpYWw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLnllc01zZyA9IG9wdHMueWVzIHx8ICd5ZXMnO1xuICAgIHRoaXMueWVzT3B0aW9uID0gb3B0cy55ZXNPcHRpb24gfHwgJyhZL24pJztcbiAgICB0aGlzLm5vTXNnID0gb3B0cy5ubyB8fCAnbm8nO1xuICAgIHRoaXMubm9PcHRpb24gPSBvcHRzLm5vT3B0aW9uIHx8ICcoeS9OKSc7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIGlmIChjLnRvTG93ZXJDYXNlKCkgPT09ICduJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRoaXMuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7ZWxzZSB0aGlzLm91dC53cml0ZShjbGVhcih0aGlzLm91dHB1dFRleHQsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICBzdXBlci5yZW5kZXIoKTtcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSwgY29sb3IuYm9sZCh0aGlzLm1zZyksIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLCB0aGlzLmRvbmUgPyB0aGlzLnZhbHVlID8gdGhpcy55ZXNNc2cgOiB0aGlzLm5vTXNnIDogY29sb3IuZ3JheSh0aGlzLmluaXRpYWxWYWx1ZSA/IHRoaXMueWVzT3B0aW9uIDogdGhpcy5ub09wdGlvbildLmpvaW4oJyAnKTtcbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxuXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29uZmlybVByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0UHJvbXB0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgU2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL3NlbGVjdCcpLFxuICBUb2dnbGVQcm9tcHQ6IHJlcXVpcmUoJy4vdG9nZ2xlJyksXG4gIERhdGVQcm9tcHQ6IHJlcXVpcmUoJy4vZGF0ZScpLFxuICBOdW1iZXJQcm9tcHQ6IHJlcXVpcmUoJy4vbnVtYmVyJyksXG4gIE11bHRpc2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL211bHRpc2VsZWN0JyksXG4gIEF1dG9jb21wbGV0ZVByb21wdDogcmVxdWlyZSgnLi9hdXRvY29tcGxldGUnKSxcbiAgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ6IHJlcXVpcmUoJy4vYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QnKSxcbiAgQ29uZmlybVByb21wdDogcmVxdWlyZSgnLi9jb25maXJtJylcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCAkID0gZXhwb3J0cztcblxuY29uc3QgZWwgPSByZXF1aXJlKCcuL2VsZW1lbnRzJyk7XG5cbmNvbnN0IG5vb3AgPSB2ID0+IHY7XG5cbmZ1bmN0aW9uIHRvUHJvbXB0KHR5cGUsIGFyZ3MsIG9wdHMgPSB7fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3QgcCA9IG5ldyBlbFt0eXBlXShhcmdzKTtcbiAgICBjb25zdCBvbkFib3J0ID0gb3B0cy5vbkFib3J0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25TdWJtaXQgPSBvcHRzLm9uU3VibWl0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25FeGl0ID0gb3B0cy5vbkV4aXQgfHwgbm9vcDtcbiAgICBwLm9uKCdzdGF0ZScsIGFyZ3Mub25TdGF0ZSB8fCBub29wKTtcbiAgICBwLm9uKCdzdWJtaXQnLCB4ID0+IHJlcyhvblN1Ym1pdCh4KSkpO1xuICAgIHAub24oJ2V4aXQnLCB4ID0+IHJlcyhvbkV4aXQoeCkpKTtcbiAgICBwLm9uKCdhYm9ydCcsIHggPT4gcmVqKG9uQWJvcnQoeCkpKTtcbiAgfSk7XG59XG4vKipcbiAqIFRleHQgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbml0aWFsXSBEZWZhdWx0IHN0cmluZyB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC50ZXh0ID0gYXJncyA9PiB0b1Byb21wdCgnVGV4dFByb21wdCcsIGFyZ3MpO1xuLyoqXG4gKiBQYXNzd29yZCBwcm9tcHQgd2l0aCBtYXNrZWQgaW5wdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC5wYXNzd29yZCA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ3Bhc3N3b3JkJztcbiAgcmV0dXJuICQudGV4dChhcmdzKTtcbn07XG4vKipcbiAqIFByb21wdCB3aGVyZSBpbnB1dCBpcyBpbnZpc2libGUsIGxpa2Ugc3Vkb1xuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaW5pdGlhbF0gRGVmYXVsdCBzdHJpbmcgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLmludmlzaWJsZSA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ2ludmlzaWJsZSc7XG4gIHJldHVybiAkLnRleHQoYXJncyk7XG59O1xuLyoqXG4gKiBOdW1iZXIgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmluaXRpYWwgRGVmYXVsdCBudW1iZXIgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heF0gTWF4IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWluXSBNaW4gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5mbG9hdD1mYWxzZV0gUGFyc2UgaW5wdXQgYXMgZmxvYXRzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMucm91bmQ9Ml0gUm91bmQgZmxvYXRzIHRvIHggZGVjaW1hbHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbmNyZW1lbnQ9MV0gTnVtYmVyIHRvIGluY3JlbWVudCBieSB3aGVuIHVzaW5nIGFycm93LWtleXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG5cblxuJC5udW1iZXIgPSBhcmdzID0+IHRvUHJvbXB0KCdOdW1iZXJQcm9tcHQnLCBhcmdzKTtcbi8qKlxuICogRGF0ZSBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLmRhdGUgPSBhcmdzID0+IHRvUHJvbXB0KCdEYXRlUHJvbXB0JywgYXJncyk7XG4vKipcbiAqIENsYXNzaWMgeWVzL25vIHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFthcmdzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuY29uZmlybSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0NvbmZpcm1Qcm9tcHQnLCBhcmdzKTtcbi8qKlxuICogTGlzdCBwcm9tcHQsIHNwbGl0IGludHB1dCBzdHJpbmcgYnkgYHNlcGVyYXRvcmBcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zZXBhcmF0b3JdIFN0cmluZyBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXQsIGluIGZvcm0gb2YgYW4gYEFycmF5YFxuICovXG5cblxuJC5saXN0ID0gYXJncyA9PiB7XG4gIGNvbnN0IHNlcCA9IGFyZ3Muc2VwYXJhdG9yIHx8ICcsJztcbiAgcmV0dXJuIHRvUHJvbXB0KCdUZXh0UHJvbXB0JywgYXJncywge1xuICAgIG9uU3VibWl0OiBzdHIgPT4gc3RyLnNwbGl0KHNlcCkubWFwKHMgPT4gcy50cmltKCkpXG4gIH0pO1xufTtcbi8qKlxuICogVG9nZ2xlL3N3aXRjaCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuYWN0aXZlPVwib25cIl0gVGV4dCBmb3IgYGFjdGl2ZWAgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbmFjdGl2ZT1cIm9mZlwiXSBUZXh0IGZvciBgaW5hY3RpdmVgIHN0YXRlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cblxuXG4kLnRvZ2dsZSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ1RvZ2dsZVByb21wdCcsIGFyZ3MpO1xuLyoqXG4gKiBJbnRlcmFjdGl2ZSBzZWxlY3QgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSB9LCAuLi5dYFxuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuc2VsZWN0ID0gYXJncyA9PiB0b1Byb21wdCgnU2VsZWN0UHJvbXB0JywgYXJncyk7XG4vKipcbiAqIEludGVyYWN0aXZlIG11bHRpLXNlbGVjdCAvIGF1dG9jb21wbGV0ZU11bHRpc2VsZWN0IHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlcyBvYmplY3RzIGBbeyB0aXRsZSwgdmFsdWUsIFtzZWxlY3RlZF0gfSwgLi4uXWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5tYXhdIE1heCBzZWxlY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5oaW50XSBIaW50IHRvIGRpc3BsYXkgdXNlclxuICogQHBhcmFtIHtOdW1iZXJ9IFthcmdzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQubXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG5cbiAgY29uc3QgdG9TZWxlY3RlZCA9IGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuXG4gIHJldHVybiB0b1Byb21wdCgnTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbiQuYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG5cbiAgY29uc3QgdG9TZWxlY3RlZCA9IGl0ZW1zID0+IGl0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpO1xuXG4gIHJldHVybiB0b1Byb21wdCgnQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbmNvbnN0IGJ5VGl0bGUgPSAoaW5wdXQsIGNob2ljZXMpID0+IFByb21pc2UucmVzb2x2ZShjaG9pY2VzLmZpbHRlcihpdGVtID0+IGl0ZW0udGl0bGUuc2xpY2UoMCwgaW5wdXQubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpKSk7XG4vKipcbiAqIEludGVyYWN0aXZlIGF1dG8tY29tcGxldGUgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBhdXRvLWNvbXBsZXRlIGNob2ljZXMgb2JqZWN0cyBgW3sgdGl0bGUsIHZhbHVlIH0sIC4uLl1gXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbYXJncy5zdWdnZXN0XSBGdW5jdGlvbiB0byBmaWx0ZXIgcmVzdWx0cyBiYXNlZCBvbiB1c2VyIGlucHV0LiBEZWZhdWx0cyB0byBzb3J0IGJ5IGB0aXRsZWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5saW1pdD0xMF0gTWF4IG51bWJlciBvZiByZXN1bHRzIHRvIHNob3dcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtTdHJpbmd9IFthcmdzLmluaXRpYWxdIEluZGV4IG9mIHRoZSBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRzLmNsZWFyRmlyc3RdIFRoZSBmaXJzdCBFU0NBUEUga2V5cHJlc3Mgd2lsbCBjbGVhciB0aGUgaW5wdXRcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5mYWxsYmFja10gRmFsbGJhY2sgbWVzc2FnZSAtIGRlZmF1bHRzIHRvIGluaXRpYWwgdmFsdWVcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFthcmdzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcmV0dXJucyB7UHJvbWlzZX0gUHJvbWlzZSB3aXRoIHVzZXIgaW5wdXRcbiAqL1xuXG5cbiQuYXV0b2NvbXBsZXRlID0gYXJncyA9PiB7XG4gIGFyZ3Muc3VnZ2VzdCA9IGFyZ3Muc3VnZ2VzdCB8fCBieVRpdGxlO1xuICBhcmdzLmNob2ljZXMgPSBbXS5jb25jYXQoYXJncy5jaG9pY2VzIHx8IFtdKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVQcm9tcHQnLCBhcmdzKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSB7IHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsgfSBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7IH0gcmV0dXJuIGtleXM7IH1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IGlmIChpICUgMikgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpLCB0cnVlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgX2RlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBzb3VyY2Vba2V5XSk7IH0pOyB9IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7IH0gZWxzZSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTsgfSk7IH0gfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKG8sIGFsbG93QXJyYXlMaWtlKSB7IHZhciBpdCA9IHR5cGVvZiBTeW1ib2wgIT09IFwidW5kZWZpbmVkXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdIHx8IG9bXCJAQGl0ZXJhdG9yXCJdOyBpZiAoIWl0KSB7IGlmIChBcnJheS5pc0FycmF5KG8pIHx8IChpdCA9IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvKSkgfHwgYWxsb3dBcnJheUxpa2UgJiYgbyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHsgaWYgKGl0KSBvID0gaXQ7IHZhciBpID0gMDsgdmFyIEYgPSBmdW5jdGlvbiBGKCkge307IHJldHVybiB7IHM6IEYsIG46IGZ1bmN0aW9uIG4oKSB7IGlmIChpID49IG8ubGVuZ3RoKSByZXR1cm4geyBkb25lOiB0cnVlIH07IHJldHVybiB7IGRvbmU6IGZhbHNlLCB2YWx1ZTogb1tpKytdIH07IH0sIGU6IGZ1bmN0aW9uIGUoX2UpIHsgdGhyb3cgX2U7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7IH0gdmFyIG5vcm1hbENvbXBsZXRpb24gPSB0cnVlLCBkaWRFcnIgPSBmYWxzZSwgZXJyOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyBpdCA9IGl0LmNhbGwobyk7IH0sIG46IGZ1bmN0aW9uIG4oKSB7IHZhciBzdGVwID0gaXQubmV4dCgpOyBub3JtYWxDb21wbGV0aW9uID0gc3RlcC5kb25lOyByZXR1cm4gc3RlcDsgfSwgZTogZnVuY3Rpb24gZShfZTIpIHsgZGlkRXJyID0gdHJ1ZTsgZXJyID0gX2UyOyB9LCBmOiBmdW5jdGlvbiBmKCkgeyB0cnkgeyBpZiAoIW5vcm1hbENvbXBsZXRpb24gJiYgaXQucmV0dXJuICE9IG51bGwpIGl0LnJldHVybigpOyB9IGZpbmFsbHkgeyBpZiAoZGlkRXJyKSB0aHJvdyBlcnI7IH0gfSB9OyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSBhcnIyW2ldID0gYXJyW2ldOyByZXR1cm4gYXJyMjsgfVxuXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG5jb25zdCBwcm9tcHRzID0gcmVxdWlyZSgnLi9wcm9tcHRzJyk7XG5cbmNvbnN0IHBhc3NPbiA9IFsnc3VnZ2VzdCcsICdmb3JtYXQnLCAnb25TdGF0ZScsICd2YWxpZGF0ZScsICdvblJlbmRlcicsICd0eXBlJ107XG5cbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcbi8qKlxuICogUHJvbXB0IGZvciBhIHNlcmllcyBvZiBxdWVzdGlvbnNcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBxdWVzdGlvbnMgU2luZ2xlIHF1ZXN0aW9uIG9iamVjdCBvciBBcnJheSBvZiBxdWVzdGlvbiBvYmplY3RzXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25TdWJtaXRdIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBvbiBwcm9tcHQgc3VibWl0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb25DYW5jZWxdIENhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCBvbiBjYW5jZWwvYWJvcnRcbiAqIEByZXR1cm5zIHtPYmplY3R9IE9iamVjdCB3aXRoIHZhbHVlcyBmcm9tIHVzZXIgaW5wdXRcbiAqL1xuXG5cbmZ1bmN0aW9uIHByb21wdCgpIHtcbiAgcmV0dXJuIF9wcm9tcHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX3Byb21wdCgpIHtcbiAgX3Byb21wdCA9IF9hc3luY1RvR2VuZXJhdG9yKGZ1bmN0aW9uKiAocXVlc3Rpb25zID0gW10sIHtcbiAgICBvblN1Ym1pdCA9IG5vb3AsXG4gICAgb25DYW5jZWwgPSBub29wXG4gIH0gPSB7fSkge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB7fTtcbiAgICBjb25zdCBvdmVycmlkZSA9IHByb21wdC5fb3ZlcnJpZGUgfHwge307XG4gICAgcXVlc3Rpb25zID0gW10uY29uY2F0KHF1ZXN0aW9ucyk7XG4gICAgbGV0IGFuc3dlciwgcXVlc3Rpb24sIHF1aXQsIG5hbWUsIHR5cGUsIGxhc3RQcm9tcHQ7XG5cbiAgICBjb25zdCBnZXRGb3JtYXR0ZWRBbnN3ZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvcihmdW5jdGlvbiogKHF1ZXN0aW9uLCBhbnN3ZXIsIHNraXBWYWxpZGF0aW9uID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFza2lwVmFsaWRhdGlvbiAmJiBxdWVzdGlvbi52YWxpZGF0ZSAmJiBxdWVzdGlvbi52YWxpZGF0ZShhbnN3ZXIpICE9PSB0cnVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHF1ZXN0aW9uLmZvcm1hdCA/IHlpZWxkIHF1ZXN0aW9uLmZvcm1hdChhbnN3ZXIsIGFuc3dlcnMpIDogYW5zd2VyO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiBnZXRGb3JtYXR0ZWRBbnN3ZXIoX3gsIF94Mikge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9KCk7XG5cbiAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIocXVlc3Rpb25zKSxcbiAgICAgICAgX3N0ZXA7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIChfaXRlcmF0b3IucygpOyAhKF9zdGVwID0gX2l0ZXJhdG9yLm4oKSkuZG9uZTspIHtcbiAgICAgICAgcXVlc3Rpb24gPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgdmFyIF9xdWVzdGlvbiA9IHF1ZXN0aW9uO1xuICAgICAgICBuYW1lID0gX3F1ZXN0aW9uLm5hbWU7XG4gICAgICAgIHR5cGUgPSBfcXVlc3Rpb24udHlwZTtcblxuICAgICAgICAvLyBldmFsdWF0ZSB0eXBlIGZpcnN0IGFuZCBza2lwIGlmIHR5cGUgaXMgYSBmYWxzeSB2YWx1ZVxuICAgICAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB0eXBlID0geWllbGQgdHlwZShhbnN3ZXIsIF9vYmplY3RTcHJlYWQoe30sIGFuc3dlcnMpLCBxdWVzdGlvbik7XG4gICAgICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHR5cGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXR5cGUpIGNvbnRpbnVlOyAvLyBpZiBwcm9wZXJ0eSBpcyBhIGZ1bmN0aW9uLCBpbnZva2UgaXQgdW5sZXNzIGl0J3MgYSBzcGVjaWFsIGZ1bmN0aW9uXG5cbiAgICAgICAgZm9yIChsZXQga2V5IGluIHF1ZXN0aW9uKSB7XG4gICAgICAgICAgaWYgKHBhc3NPbi5pbmNsdWRlcyhrZXkpKSBjb250aW51ZTtcbiAgICAgICAgICBsZXQgdmFsdWUgPSBxdWVzdGlvbltrZXldO1xuICAgICAgICAgIHF1ZXN0aW9uW2tleV0gPSB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgPyB5aWVsZCB2YWx1ZShhbnN3ZXIsIF9vYmplY3RTcHJlYWQoe30sIGFuc3dlcnMpLCBsYXN0UHJvbXB0KSA6IHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGFzdFByb21wdCA9IHF1ZXN0aW9uO1xuXG4gICAgICAgIGlmICh0eXBlb2YgcXVlc3Rpb24ubWVzc2FnZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb21wdCBtZXNzYWdlIGlzIHJlcXVpcmVkJyk7XG4gICAgICAgIH0gLy8gdXBkYXRlIHZhcnMgaW4gY2FzZSB0aGV5IGNoYW5nZWRcblxuXG4gICAgICAgIHZhciBfcXVlc3Rpb24yID0gcXVlc3Rpb247XG4gICAgICAgIG5hbWUgPSBfcXVlc3Rpb24yLm5hbWU7XG4gICAgICAgIHR5cGUgPSBfcXVlc3Rpb24yLnR5cGU7XG5cbiAgICAgICAgaWYgKHByb21wdHNbdHlwZV0gPT09IHZvaWQgMCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvbXB0IHR5cGUgKCR7dHlwZX0pIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFuc3dlciA9IHlpZWxkIGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgb3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0pO1xuXG4gICAgICAgICAgaWYgKGFuc3dlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhbnN3ZXJzW25hbWVdID0gYW5zd2VyO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBHZXQgdGhlIGluamVjdGVkIGFuc3dlciBpZiB0aGVyZSBpcyBvbmUgb3IgcHJvbXB0IHRoZSB1c2VyXG4gICAgICAgICAgYW5zd2VyID0gcHJvbXB0Ll9pbmplY3RlZCA/IGdldEluamVjdGVkQW5zd2VyKHByb21wdC5faW5qZWN0ZWQsIHF1ZXN0aW9uLmluaXRpYWwpIDogeWllbGQgcHJvbXB0c1t0eXBlXShxdWVzdGlvbik7XG4gICAgICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlciA9IHlpZWxkIGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgYW5zd2VyLCB0cnVlKTtcbiAgICAgICAgICBxdWl0ID0geWllbGQgb25TdWJtaXQocXVlc3Rpb24sIGFuc3dlciwgYW5zd2Vycyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIHF1aXQgPSAhKHlpZWxkIG9uQ2FuY2VsKHF1ZXN0aW9uLCBhbnN3ZXJzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocXVpdCkgcmV0dXJuIGFuc3dlcnM7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBfaXRlcmF0b3IuZShlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBfaXRlcmF0b3IuZigpO1xuICAgIH1cblxuICAgIHJldHVybiBhbnN3ZXJzO1xuICB9KTtcbiAgcmV0dXJuIF9wcm9tcHQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gZ2V0SW5qZWN0ZWRBbnN3ZXIoaW5qZWN0ZWQsIGRlYWZ1bHRWYWx1ZSkge1xuICBjb25zdCBhbnN3ZXIgPSBpbmplY3RlZC5zaGlmdCgpO1xuXG4gIGlmIChhbnN3ZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIHRocm93IGFuc3dlcjtcbiAgfVxuXG4gIHJldHVybiBhbnN3ZXIgPT09IHVuZGVmaW5lZCA/IGRlYWZ1bHRWYWx1ZSA6IGFuc3dlcjtcbn1cblxuZnVuY3Rpb24gaW5qZWN0KGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9pbmplY3RlZCA9IChwcm9tcHQuX2luamVjdGVkIHx8IFtdKS5jb25jYXQoYW5zd2Vycyk7XG59XG5cbmZ1bmN0aW9uIG92ZXJyaWRlKGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9vdmVycmlkZSA9IE9iamVjdC5hc3NpZ24oe30sIGFuc3dlcnMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24ocHJvbXB0LCB7XG4gIHByb21wdCxcbiAgcHJvbXB0cyxcbiAgaW5qZWN0LFxuICBvdmVycmlkZVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IChrZXksIGlzU2VsZWN0KSA9PiB7XG4gIGlmIChrZXkubWV0YSAmJiBrZXkubmFtZSAhPT0gJ2VzY2FwZScpIHJldHVybjtcbiAgXG4gIGlmIChrZXkuY3RybCkge1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2EnKSByZXR1cm4gJ2ZpcnN0JztcbiAgICBpZiAoa2V5Lm5hbWUgPT09ICdjJykgcmV0dXJuICdhYm9ydCc7XG4gICAgaWYgKGtleS5uYW1lID09PSAnZCcpIHJldHVybiAnYWJvcnQnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2UnKSByZXR1cm4gJ2xhc3QnO1xuICAgIGlmIChrZXkubmFtZSA9PT0gJ2cnKSByZXR1cm4gJ3Jlc2V0JztcbiAgfVxuICBcbiAgaWYgKGlzU2VsZWN0KSB7XG4gICAgaWYgKGtleS5uYW1lID09PSAnaicpIHJldHVybiAnZG93bic7XG4gICAgaWYgKGtleS5uYW1lID09PSAnaycpIHJldHVybiAndXAnO1xuICB9XG5cbiAgaWYgKGtleS5uYW1lID09PSAncmV0dXJuJykgcmV0dXJuICdzdWJtaXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlbnRlcicpIHJldHVybiAnc3VibWl0JzsgLy8gY3RybCArIEpcbiAgaWYgKGtleS5uYW1lID09PSAnYmFja3NwYWNlJykgcmV0dXJuICdkZWxldGUnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkZWxldGUnKSByZXR1cm4gJ2RlbGV0ZUZvcndhcmQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdhYm9ydCcpIHJldHVybiAnYWJvcnQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdlc2NhcGUnKSByZXR1cm4gJ2V4aXQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICd0YWInKSByZXR1cm4gJ25leHQnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdlZG93bicpIHJldHVybiAnbmV4dFBhZ2UnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdwYWdldXAnKSByZXR1cm4gJ3ByZXZQYWdlJztcbiAgLy8gVE9ETyBjcmVhdGUgaG9tZSgpIGluIHByb21wdCB0eXBlcyAoZS5nLiBUZXh0UHJvbXB0KVxuICBpZiAoa2V5Lm5hbWUgPT09ICdob21lJykgcmV0dXJuICdob21lJztcbiAgLy8gVE9ETyBjcmVhdGUgZW5kKCkgaW4gcHJvbXB0IHR5cGVzIChlLmcuIFRleHRQcm9tcHQpXG4gIGlmIChrZXkubmFtZSA9PT0gJ2VuZCcpIHJldHVybiAnZW5kJztcblxuICBpZiAoa2V5Lm5hbWUgPT09ICd1cCcpIHJldHVybiAndXAnO1xuICBpZiAoa2V5Lm5hbWUgPT09ICdkb3duJykgcmV0dXJuICdkb3duJztcbiAgaWYgKGtleS5uYW1lID09PSAncmlnaHQnKSByZXR1cm4gJ3JpZ2h0JztcbiAgaWYgKGtleS5uYW1lID09PSAnbGVmdCcpIHJldHVybiAnbGVmdCc7XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBzdHIgPT4ge1xuICBjb25zdCBwYXR0ZXJuID0gW1xuICAgICdbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpJyxcbiAgICAnKD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFJaY2YtbnRxcnk9Pjx+XSkpJ1xuICBdLmpvaW4oJ3wnKTtcblxuICBjb25zdCBSR1ggPSBuZXcgUmVnRXhwKHBhdHRlcm4sICdnJyk7XG4gIHJldHVybiB0eXBlb2Ygc3RyID09PSAnc3RyaW5nJyA/IHN0ci5yZXBsYWNlKFJHWCwgJycpIDogc3RyO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3Qgc3RyaXAgPSByZXF1aXJlKCcuL3N0cmlwJyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcblxuY29uc3Qgd2lkdGggPSBzdHIgPT4gWy4uLnN0cmlwKHN0cildLmxlbmd0aDtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvbXB0XG4gKiBAcGFyYW0ge251bWJlcn0gcGVyTGluZVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHByb21wdCwgcGVyTGluZSkge1xuICBpZiAoIXBlckxpbmUpIHJldHVybiBlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApO1xuXG4gIGxldCByb3dzID0gMDtcbiAgY29uc3QgbGluZXMgPSBwcm9tcHQuc3BsaXQoL1xccj9cXG4vKTtcbiAgZm9yIChsZXQgbGluZSBvZiBsaW5lcykge1xuICAgIHJvd3MgKz0gMSArIE1hdGguZmxvb3IoTWF0aC5tYXgod2lkdGgobGluZSkgLSAxLCAwKSAvIHBlckxpbmUpO1xuICB9XG5cbiAgcmV0dXJuIGVyYXNlLmxpbmVzKHJvd3MpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcdFxuXG4gY29uc3QgbWFpbiA9IHtcbiAgYXJyb3dVcDogJ+KGkScsXG4gIGFycm93RG93bjogJ+KGkycsXG4gIGFycm93TGVmdDogJ+KGkCcsXG4gIGFycm93UmlnaHQ6ICfihpInLFxuICByYWRpb09uOiAn4peJJyxcbiAgcmFkaW9PZmY6ICfil68nLFxuICB0aWNrOiAn4pyUJyxcdFxuICBjcm9zczogJ+KclicsXHRcbiAgZWxsaXBzaXM6ICfigKYnLFx0XG4gIHBvaW50ZXJTbWFsbDogJ+KAuicsXHRcbiAgbGluZTogJ+KUgCcsXHRcbiAgcG9pbnRlcjogJ+KdrydcdFxufTtcdFxuY29uc3Qgd2luID0ge1xuICBhcnJvd1VwOiBtYWluLmFycm93VXAsXG4gIGFycm93RG93bjogbWFpbi5hcnJvd0Rvd24sXG4gIGFycm93TGVmdDogbWFpbi5hcnJvd0xlZnQsXG4gIGFycm93UmlnaHQ6IG1haW4uYXJyb3dSaWdodCxcbiAgcmFkaW9PbjogJygqKScsXG4gIHJhZGlvT2ZmOiAnKCApJyxcdFxuICB0aWNrOiAn4oiaJyxcdFxuICBjcm9zczogJ8OXJyxcdFxuICBlbGxpcHNpczogJy4uLicsXHRcbiAgcG9pbnRlclNtYWxsOiAnwrsnLFx0XG4gIGxpbmU6ICfilIAnLFx0XG4gIHBvaW50ZXI6ICc+J1x0XG59O1x0XG5jb25zdCBmaWd1cmVzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbiA6IG1haW47XHRcblxuIG1vZHVsZS5leHBvcnRzID0gZmlndXJlcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYyA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBmaWd1cmVzID0gcmVxdWlyZSgnLi9maWd1cmVzJyk7XG5cbi8vIHJlbmRlcmluZyB1c2VyIGlucHV0LlxuY29uc3Qgc3R5bGVzID0gT2JqZWN0LmZyZWV6ZSh7XG4gIHBhc3N3b3JkOiB7IHNjYWxlOiAxLCByZW5kZXI6IGlucHV0ID0+ICcqJy5yZXBlYXQoaW5wdXQubGVuZ3RoKSB9LFxuICBlbW9qaTogeyBzY2FsZTogMiwgcmVuZGVyOiBpbnB1dCA9PiAn8J+YgycucmVwZWF0KGlucHV0Lmxlbmd0aCkgfSxcbiAgaW52aXNpYmxlOiB7IHNjYWxlOiAwLCByZW5kZXI6IGlucHV0ID0+ICcnIH0sXG4gIGRlZmF1bHQ6IHsgc2NhbGU6IDEsIHJlbmRlcjogaW5wdXQgPT4gYCR7aW5wdXR9YCB9XG59KTtcbmNvbnN0IHJlbmRlciA9IHR5cGUgPT4gc3R5bGVzW3R5cGVdIHx8IHN0eWxlcy5kZWZhdWx0O1xuXG4vLyBpY29uIHRvIHNpZ25hbGl6ZSBhIHByb21wdC5cbmNvbnN0IHN5bWJvbHMgPSBPYmplY3QuZnJlZXplKHtcbiAgYWJvcnRlZDogYy5yZWQoZmlndXJlcy5jcm9zcyksXG4gIGRvbmU6IGMuZ3JlZW4oZmlndXJlcy50aWNrKSxcbiAgZXhpdGVkOiBjLnllbGxvdyhmaWd1cmVzLmNyb3NzKSxcbiAgZGVmYXVsdDogYy5jeWFuKCc/Jylcbn0pO1xuXG5jb25zdCBzeW1ib2wgPSAoZG9uZSwgYWJvcnRlZCwgZXhpdGVkKSA9PlxuICBhYm9ydGVkID8gc3ltYm9scy5hYm9ydGVkIDogZXhpdGVkID8gc3ltYm9scy5leGl0ZWQgOiBkb25lID8gc3ltYm9scy5kb25lIDogc3ltYm9scy5kZWZhdWx0O1xuXG4vLyBiZXR3ZWVuIHRoZSBxdWVzdGlvbiBhbmQgdGhlIHVzZXIncyBpbnB1dC5cbmNvbnN0IGRlbGltaXRlciA9IGNvbXBsZXRpbmcgPT5cbiAgYy5ncmF5KGNvbXBsZXRpbmcgPyBmaWd1cmVzLmVsbGlwc2lzIDogZmlndXJlcy5wb2ludGVyU21hbGwpO1xuXG5jb25zdCBpdGVtID0gKGV4cGFuZGFibGUsIGV4cGFuZGVkKSA9PlxuICBjLmdyYXkoZXhwYW5kYWJsZSA/IChleHBhbmRlZCA/IGZpZ3VyZXMucG9pbnRlclNtYWxsIDogJysnKSA6IGZpZ3VyZXMubGluZSk7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzdHlsZXMsXG4gIHJlbmRlcixcbiAgc3ltYm9scyxcbiAgc3ltYm9sLFxuICBkZWxpbWl0ZXIsXG4gIGl0ZW1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHN0cmlwID0gcmVxdWlyZSgnLi9zdHJpcCcpO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dcbiAqIEBwYXJhbSB7bnVtYmVyfSBwZXJMaW5lXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG1zZywgcGVyTGluZSkge1xuICBsZXQgbGluZXMgPSBTdHJpbmcoc3RyaXAobXNnKSB8fCAnJykuc3BsaXQoL1xccj9cXG4vKTtcblxuICBpZiAoIXBlckxpbmUpIHJldHVybiBsaW5lcy5sZW5ndGg7XG4gIHJldHVybiBsaW5lcy5tYXAobCA9PiBNYXRoLmNlaWwobC5sZW5ndGggLyBwZXJMaW5lKSlcbiAgICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyBUaGUgbWVzc2FnZSB0byB3cmFwXG4gKiBAcGFyYW0ge29iamVjdH0gb3B0c1xuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBbb3B0cy5tYXJnaW5dIExlZnQgbWFyZ2luXG4gKiBAcGFyYW0ge251bWJlcn0gb3B0cy53aWR0aCBNYXhpbXVtIGNoYXJhY3RlcnMgcGVyIGxpbmUgaW5jbHVkaW5nIHRoZSBtYXJnaW5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSAobXNnLCBvcHRzID0ge30pID0+IHtcbiAgY29uc3QgdGFiID0gTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQob3B0cy5tYXJnaW4pKVxuICAgID8gbmV3IEFycmF5KHBhcnNlSW50KG9wdHMubWFyZ2luKSkuZmlsbCgnICcpLmpvaW4oJycpXG4gICAgOiAob3B0cy5tYXJnaW4gfHwgJycpO1xuXG4gIGNvbnN0IHdpZHRoID0gb3B0cy53aWR0aDtcblxuICByZXR1cm4gKG1zZyB8fCAnJykuc3BsaXQoL1xccj9cXG4vZylcbiAgICAubWFwKGxpbmUgPT4gbGluZVxuICAgICAgLnNwbGl0KC9cXHMrL2cpXG4gICAgICAucmVkdWNlKChhcnIsIHcpID0+IHtcbiAgICAgICAgaWYgKHcubGVuZ3RoICsgdGFiLmxlbmd0aCA+PSB3aWR0aCB8fCBhcnJbYXJyLmxlbmd0aCAtIDFdLmxlbmd0aCArIHcubGVuZ3RoICsgMSA8IHdpZHRoKVxuICAgICAgICAgIGFyclthcnIubGVuZ3RoIC0gMV0gKz0gYCAke3d9YDtcbiAgICAgICAgZWxzZSBhcnIucHVzaChgJHt0YWJ9JHt3fWApO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfSwgWyB0YWIgXSlcbiAgICAgIC5qb2luKCdcXG4nKSlcbiAgICAuam9pbignXFxuJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIERldGVybWluZSB3aGF0IGVudHJpZXMgc2hvdWxkIGJlIGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLCBiYXNlZCBvbiB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBpbmRleCBhbmQgdGhlIG1heGltdW0gdmlzaWJsZS4gVXNlZCBpbiBsaXN0LWJhc2VkXG4gKiBwcm9tcHRzIGxpa2UgYHNlbGVjdGAgYW5kIGBtdWx0aXNlbGVjdGAuXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnNvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGVudHJ5XG4gKiBAcGFyYW0ge251bWJlcn0gdG90YWwgdGhlIHRvdGFsIGVudHJpZXMgYXZhaWxhYmxlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbWF4VmlzaWJsZV0gdGhlIG51bWJlciBvZiBlbnRyaWVzIHRoYXQgY2FuIGJlIGRpc3BsYXllZFxuICovXG5tb2R1bGUuZXhwb3J0cyA9IChjdXJzb3IsIHRvdGFsLCBtYXhWaXNpYmxlKSAgPT4ge1xuICBtYXhWaXNpYmxlID0gbWF4VmlzaWJsZSB8fCB0b3RhbDtcblxuICBsZXQgc3RhcnRJbmRleCA9IE1hdGgubWluKHRvdGFsLSBtYXhWaXNpYmxlLCBjdXJzb3IgLSBNYXRoLmZsb29yKG1heFZpc2libGUgLyAyKSk7XG4gIGlmIChzdGFydEluZGV4IDwgMCkgc3RhcnRJbmRleCA9IDA7XG5cbiAgbGV0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIG1heFZpc2libGUsIHRvdGFsKTtcblxuICByZXR1cm4geyBzdGFydEluZGV4LCBlbmRJbmRleCB9O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFjdGlvbjogcmVxdWlyZSgnLi9hY3Rpb24nKSxcbiAgY2xlYXI6IHJlcXVpcmUoJy4vY2xlYXInKSxcbiAgc3R5bGU6IHJlcXVpcmUoJy4vc3R5bGUnKSxcbiAgc3RyaXA6IHJlcXVpcmUoJy4vc3RyaXAnKSxcbiAgZmlndXJlczogcmVxdWlyZSgnLi9maWd1cmVzJyksXG4gIGxpbmVzOiByZXF1aXJlKCcuL2xpbmVzJyksXG4gIHdyYXA6IHJlcXVpcmUoJy4vd3JhcCcpLFxuICBlbnRyaWVzVG9EaXNwbGF5OiByZXF1aXJlKCcuL2VudHJpZXNUb0Rpc3BsYXknKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgcmVhZGxpbmUgPSByZXF1aXJlKCdyZWFkbGluZScpO1xuY29uc3QgeyBhY3Rpb24gfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcbmNvbnN0IEV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJ2V2ZW50cycpO1xuY29uc3QgeyBiZWVwLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcblxuLyoqXG4gKiBCYXNlIHByb21wdCBza2VsZXRvblxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKi9cbmNsYXNzIFByb21wdCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5maXJzdFJlbmRlciA9IHRydWU7XG4gICAgdGhpcy5pbiA9IG9wdHMuc3RkaW4gfHwgcHJvY2Vzcy5zdGRpbjtcbiAgICB0aGlzLm91dCA9IG9wdHMuc3Rkb3V0IHx8IHByb2Nlc3Muc3Rkb3V0O1xuICAgIHRoaXMub25SZW5kZXIgPSAob3B0cy5vblJlbmRlciB8fCAoKCkgPT4gdm9pZCAwKSkuYmluZCh0aGlzKTtcbiAgICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7IGlucHV0OnRoaXMuaW4sIGVzY2FwZUNvZGVUaW1lb3V0OjUwIH0pO1xuICAgIHJlYWRsaW5lLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmluLCBybCk7XG5cbiAgICBpZiAodGhpcy5pbi5pc1RUWSkgdGhpcy5pbi5zZXRSYXdNb2RlKHRydWUpO1xuICAgIGNvbnN0IGlzU2VsZWN0ID0gWyAnU2VsZWN0UHJvbXB0JywgJ011bHRpc2VsZWN0UHJvbXB0JyBdLmluZGV4T2YodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKSA+IC0xO1xuICAgIGNvbnN0IGtleXByZXNzID0gKHN0ciwga2V5KSA9PiB7XG4gICAgICBsZXQgYSA9IGFjdGlvbihrZXksIGlzU2VsZWN0KTtcbiAgICAgIGlmIChhID09PSBmYWxzZSkge1xuICAgICAgICB0aGlzLl8gJiYgdGhpcy5fKHN0ciwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXNbYV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpc1thXShrZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5iZWxsKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMuY2xvc2UgPSAoKSA9PiB7XG4gICAgICB0aGlzLm91dC53cml0ZShjdXJzb3Iuc2hvdyk7XG4gICAgICB0aGlzLmluLnJlbW92ZUxpc3RlbmVyKCdrZXlwcmVzcycsIGtleXByZXNzKTtcbiAgICAgIGlmICh0aGlzLmluLmlzVFRZKSB0aGlzLmluLnNldFJhd01vZGUoZmFsc2UpO1xuICAgICAgcmwuY2xvc2UoKTtcbiAgICAgIHRoaXMuZW1pdCh0aGlzLmFib3J0ZWQgPyAnYWJvcnQnIDogdGhpcy5leGl0ZWQgPyAnZXhpdCcgOiAnc3VibWl0JywgdGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLmNsb3NlZCA9IHRydWU7XG4gICAgfTtcblxuICAgIHRoaXMuaW4ub24oJ2tleXByZXNzJywga2V5cHJlc3MpO1xuICB9XG5cbiAgZmlyZSgpIHtcbiAgICB0aGlzLmVtaXQoJ3N0YXRlJywge1xuICAgICAgdmFsdWU6IHRoaXMudmFsdWUsXG4gICAgICBhYm9ydGVkOiAhIXRoaXMuYWJvcnRlZCxcbiAgICAgIGV4aXRlZDogISF0aGlzLmV4aXRlZFxuICAgIH0pO1xuICB9XG5cbiAgYmVsbCgpIHtcbiAgICB0aGlzLm91dC53cml0ZShiZWVwKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICB0aGlzLm9uUmVuZGVyKGNvbG9yKTtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5maXJzdFJlbmRlciA9IGZhbHNlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbXB0O1xuIiwiY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcbmNvbnN0IHsgZXJhc2UsIGN1cnNvciB9ID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpO1xuY29uc3QgeyBzdHlsZSwgY2xlYXIsIGxpbmVzLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbi8qKlxuICogVGV4dFByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnN0eWxlPSdkZWZhdWx0J10gUmVuZGVyIHN0eWxlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuY2xhc3MgVGV4dFByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLnRyYW5zZm9ybSA9IHN0eWxlLnJlbmRlcihvcHRzLnN0eWxlKTtcbiAgICB0aGlzLnNjYWxlID0gdGhpcy50cmFuc2Zvcm0uc2NhbGU7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5pbml0aWFsID0gb3B0cy5pbml0aWFsIHx8IGBgO1xuICAgIHRoaXMudmFsaWRhdG9yID0gb3B0cy52YWxpZGF0ZSB8fCAoKCkgPT4gdHJ1ZSk7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8IGBQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZWA7XG4gICAgdGhpcy5jdXJzb3IgPSBOdW1iZXIoISF0aGlzLmluaXRpYWwpO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMDtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIoYGAsIHRoaXMub3V0LmNvbHVtbnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBzZXQgdmFsdWUodikge1xuICAgIGlmICghdiAmJiB0aGlzLmluaXRpYWwpIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0cnVlO1xuICAgICAgdGhpcy5yZW5kZXJlZCA9IGNvbG9yLmdyYXkodGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5pdGlhbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHYpO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuY3Vyc29yID0gTnVtYmVyKCEhdGhpcy5pbml0aWFsKTtcbiAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gYXdhaXQgdGhpcy52YWxpZGF0b3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gYHN0cmluZ2ApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUgfHwgdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5yZWQgPSB0cnVlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMucmVuZGVyZWQubGVuZ3RoO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IrbjtcbiAgICB0aGlzLmN1cnNvck9mZnNldCArPSBuO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBsZXQgczEgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIHRoaXMuY3Vyc29yKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtjfSR7czJ9YDtcbiAgICB0aGlzLnJlZCA9IGZhbHNlO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5wbGFjZWhvbGRlciA/IDAgOiBzMS5sZW5ndGgrMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmlzQ3Vyc29yQXRTdGFydCgpKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgbGV0IHMxID0gdGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLmN1cnNvci0xKTtcbiAgICBsZXQgczIgPSB0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdFN0YXJ0KCkpIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0ID0gMFxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCsrO1xuICAgICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZUZvcndhcmQoKSB7XG4gICAgaWYodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCB8fCB0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgbGV0IHMxID0gdGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLmN1cnNvcik7XG4gICAgbGV0IHMyID0gdGhpcy52YWx1ZS5zbGljZSh0aGlzLmN1cnNvcisxKTtcbiAgICB0aGlzLnZhbHVlID0gYCR7czF9JHtzMn1gO1xuICAgIHRoaXMucmVkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNDdXJzb3JBdEVuZCgpKSB7XG4gICAgICB0aGlzLmN1cnNvck9mZnNldCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yT2Zmc2V0Kys7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBmaXJzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxhc3QoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPD0gMCB8fCB0aGlzLnBsYWNlaG9sZGVyKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKC0xKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yKnRoaXMuc2NhbGUgPj0gdGhpcy5yZW5kZXJlZC5sZW5ndGggfHwgdGhpcy5wbGFjZWhvbGRlcikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMubW92ZUN1cnNvcigxKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgaXNDdXJzb3JBdFN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLmN1cnNvciA9PT0gMCB8fCAodGhpcy5wbGFjZWhvbGRlciAmJiB0aGlzLmN1cnNvciA9PT0gMSk7XG4gIH1cblxuICBpc0N1cnNvckF0RW5kKCkge1xuICAgIHJldHVybiB0aGlzLmN1cnNvciA9PT0gdGhpcy5yZW5kZXJlZC5sZW5ndGggfHwgKHRoaXMucGxhY2Vob2xkZXIgJiYgdGhpcy5jdXJzb3IgPT09IHRoaXMucmVuZGVyZWQubGVuZ3RoICsgMSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAoIXRoaXMuZmlyc3RSZW5kZXIpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dEVycm9yKVxuICAgICAgICB0aGlzLm91dC53cml0ZShjdXJzb3IuZG93bihsaW5lcyh0aGlzLm91dHB1dEVycm9yLCB0aGlzLm91dC5jb2x1bW5zKSAtIDEpICsgY2xlYXIodGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgfVxuICAgIHN1cGVyLnJlbmRlcigpO1xuICAgIHRoaXMub3V0cHV0RXJyb3IgPSAnJztcblxuICAgIHRoaXMub3V0cHV0VGV4dCA9IFtcbiAgICAgIHN0eWxlLnN5bWJvbCh0aGlzLmRvbmUsIHRoaXMuYWJvcnRlZCksXG4gICAgICBjb2xvci5ib2xkKHRoaXMubXNnKSxcbiAgICAgIHN0eWxlLmRlbGltaXRlcih0aGlzLmRvbmUpLFxuICAgICAgdGhpcy5yZWQgPyBjb2xvci5yZWQodGhpcy5yZW5kZXJlZCkgOiB0aGlzLnJlbmRlcmVkXG4gICAgXS5qb2luKGAgYCk7XG5cbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5vdXRwdXRFcnJvciArPSB0aGlzLmVycm9yTXNnLnNwbGl0KGBcXG5gKVxuICAgICAgICAgIC5yZWR1Y2UoKGEsIGwsIGkpID0+IGEgKyBgXFxuJHtpID8gJyAnIDogZmlndXJlcy5wb2ludGVyU21hbGx9ICR7Y29sb3IucmVkKCkuaXRhbGljKGwpfWAsIGBgKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0ICsgY3Vyc29yLnNhdmUgKyB0aGlzLm91dHB1dEVycm9yICsgY3Vyc29yLnJlc3RvcmUgKyBjdXJzb3IubW92ZSh0aGlzLmN1cnNvck9mZnNldCwgMCkpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gVGV4dFByb21wdDsiLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IHN0eWxlLCBjbGVhciwgZmlndXJlcywgd3JhcCwgZW50cmllc1RvRGlzcGxheSB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuY29uc3QgeyBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcblxuLyoqXG4gKiBTZWxlY3RQcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7QXJyYXl9IG9wdHMuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2Ugb2JqZWN0c1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmhpbnRdIEhpbnQgdG8gZGlzcGxheVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLm9wdGlvbnNQZXJQYWdlPTEwXSBNYXggb3B0aW9ucyB0byBkaXNwbGF5IGF0IG9uY2VcbiAqL1xuY2xhc3MgU2VsZWN0UHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnLSBVc2UgYXJyb3cta2V5cy4gUmV0dXJuIHRvIHN1Ym1pdC4nO1xuICAgIHRoaXMud2FybiA9IG9wdHMud2FybiB8fCAnLSBUaGlzIG9wdGlvbiBpcyBkaXNhYmxlZCc7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmluaXRpYWwgfHwgMDtcbiAgICB0aGlzLmNob2ljZXMgPSBvcHRzLmNob2ljZXMubWFwKChjaCwgaWR4KSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGNoID09PSAnc3RyaW5nJylcbiAgICAgICAgY2ggPSB7dGl0bGU6IGNoLCB2YWx1ZTogaWR4fTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiBjaCAmJiAoY2gudGl0bGUgfHwgY2gudmFsdWUgfHwgY2gpLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBjaCAmJiBjaC5kZXNjcmlwdGlvbixcbiAgICAgICAgc2VsZWN0ZWQ6IGNoICYmIGNoLnNlbGVjdGVkLFxuICAgICAgICBkaXNhYmxlZDogY2ggJiYgY2guZGlzYWJsZWRcbiAgICAgIH07XG4gICAgfSk7XG4gICAgdGhpcy5vcHRpb25zUGVyUGFnZSA9IG9wdHMub3B0aW9uc1BlclBhZ2UgfHwgMTA7XG4gICAgdGhpcy52YWx1ZSA9ICh0aGlzLmNob2ljZXNbdGhpcy5jdXJzb3JdIHx8IHt9KS52YWx1ZTtcbiAgICB0aGlzLmNsZWFyID0gY2xlYXIoJycsIHRoaXMub3V0LmNvbHVtbnMpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLmN1cnNvciA9IG47XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMuY2hvaWNlc1tuXS52YWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5hYm9ydGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlXG4gICAgICB0aGlzLmJlbGwoKTtcbiAgfVxuXG4gIGZpcnN0KCkge1xuICAgIHRoaXMubW92ZUN1cnNvcigwKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGFzdCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5jaG9pY2VzLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmNob2ljZXMubGVuZ3RoIC0gMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciAtIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IgPT09IHRoaXMuY2hvaWNlcy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLm1vdmVDdXJzb3IoMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW92ZUN1cnNvcih0aGlzLmN1cnNvciArIDEpO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLm1vdmVDdXJzb3IoKHRoaXMuY3Vyc29yICsgMSkgJSB0aGlzLmNob2ljZXMubGVuZ3RoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgXyhjLCBrZXkpIHtcbiAgICBpZiAoYyA9PT0gJyAnKSByZXR1cm4gdGhpcy5zdWJtaXQoKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hvaWNlc1t0aGlzLmN1cnNvcl07XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMub3B0aW9uc1BlclBhZ2UpO1xuXG4gICAgLy8gUHJpbnQgcHJvbXB0XG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMuZG9uZSA/IHRoaXMuc2VsZWN0aW9uLnRpdGxlIDogdGhpcy5zZWxlY3Rpb24uZGlzYWJsZWRcbiAgICAgICAgICA/IGNvbG9yLnllbGxvdyh0aGlzLndhcm4pIDogY29sb3IuZ3JheSh0aGlzLmhpbnQpXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICAvLyBQcmludCBjaG9pY2VzXG4gICAgaWYgKCF0aGlzLmRvbmUpIHtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSAnXFxuJztcbiAgICAgIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykge1xuICAgICAgICBsZXQgdGl0bGUsIHByZWZpeCwgZGVzYyA9ICcnLCB2ID0gdGhpcy5jaG9pY2VzW2ldO1xuXG4gICAgICAgIC8vIERldGVybWluZSB3aGV0aGVyIHRvIGRpc3BsYXkgXCJtb3JlIGNob2ljZXNcIiBpbmRpY2F0b3JzXG4gICAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd1VwO1xuICAgICAgICB9IGVsc2UgaWYgKGkgPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICBwcmVmaXggPSBmaWd1cmVzLmFycm93RG93bjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodi5kaXNhYmxlZCkge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgICAgICAgcHJlZml4ID0gKHRoaXMuY3Vyc29yID09PSBpID8gY29sb3IuYm9sZCgpLmdyYXkoZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRpdGxlID0gdGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICAgICAgICBwcmVmaXggPSAodGhpcy5jdXJzb3IgPT09IGkgPyBjb2xvci5jeWFuKGZpZ3VyZXMucG9pbnRlcikgKyAnICcgOiAnICAnKSArIHByZWZpeDtcbiAgICAgICAgICBpZiAodi5kZXNjcmlwdGlvbiAmJiB0aGlzLmN1cnNvciA9PT0gaSkge1xuICAgICAgICAgICAgZGVzYyA9IGAgLSAke3YuZGVzY3JpcHRpb259YDtcbiAgICAgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1uc1xuICAgICAgICAgICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGRlc2MgPSAnXFxuJyArIHdyYXAodi5kZXNjcmlwdGlvbiwgeyBtYXJnaW46IDMsIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3V0cHV0VGV4dCArPSBgJHtwcmVmaXh9ICR7dGl0bGV9JHtjb2xvci5ncmF5KGRlc2MpfVxcbmA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUodGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlbGVjdFByb21wdDtcbiIsImNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IHN0eWxlLCBjbGVhciB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuY29uc3QgeyBjdXJzb3IsIGVyYXNlIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5cbi8qKlxuICogVG9nZ2xlUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmluaXRpYWw9ZmFsc2VdIERlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5hY3RpdmU9J25vJ10gQWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5hY3RpdmU9J29mZiddIEluYWN0aXZlIGxhYmVsXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgVG9nZ2xlUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLmFjdGl2ZSA9IG9wdHMuYWN0aXZlIHx8ICdvbic7XG4gICAgdGhpcy5pbmFjdGl2ZSA9IG9wdHMuaW5hY3RpdmUgfHwgJ29mZic7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsVmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIGlmICh0aGlzLnZhbHVlID09PSBmYWxzZSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUgPT09IHRydWUpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIHRoaXMuZGVhY3RpdmF0ZSgpO1xuICB9XG4gIGxlZnQoKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cbiAgcmlnaHQoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZSgpO1xuICB9XG4gIGRvd24oKSB7XG4gICAgdGhpcy5kZWFjdGl2YXRlKCk7XG4gIH1cbiAgdXAoKSB7XG4gICAgdGhpcy5hY3RpdmF0ZSgpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnZhbHVlID0gIXRoaXMudmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy52YWx1ZSA9ICF0aGlzLnZhbHVlO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJzEnKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICcwJykge1xuICAgICAgdGhpcy52YWx1ZSA9IGZhbHNlO1xuICAgIH0gZWxzZSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIGVsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIodGhpcy5kb25lKSxcbiAgICAgIHRoaXMudmFsdWUgPyB0aGlzLmluYWN0aXZlIDogY29sb3IuY3lhbigpLnVuZGVybGluZSh0aGlzLmluYWN0aXZlKSxcbiAgICAgIGNvbG9yLmdyYXkoJy8nKSxcbiAgICAgIHRoaXMudmFsdWUgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHRoaXMuYWN0aXZlKSA6IHRoaXMuYWN0aXZlXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRvZ2dsZVByb21wdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY2xhc3MgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3Rvcih7dG9rZW4sIGRhdGUsIHBhcnRzLCBsb2NhbGVzfSkge1xuICAgIHRoaXMudG9rZW4gPSB0b2tlbjtcbiAgICB0aGlzLmRhdGUgPSBkYXRlIHx8IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5wYXJ0cyA9IHBhcnRzIHx8IFt0aGlzXTtcbiAgICB0aGlzLmxvY2FsZXMgPSBsb2NhbGVzIHx8IHt9O1xuICB9XG5cbiAgdXAoKSB7fVxuXG4gIGRvd24oKSB7fVxuXG4gIG5leHQoKSB7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHRoaXMucGFydHMuaW5kZXhPZih0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5wYXJ0cy5maW5kKChwYXJ0LCBpZHgpID0+IGlkeCA+IGN1cnJlbnRJZHggJiYgcGFydCBpbnN0YW5jZW9mIERhdGVQYXJ0KTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge31cblxuICBwcmV2KCkge1xuICAgIGxldCBwYXJ0cyA9IFtdLmNvbmNhdCh0aGlzLnBhcnRzKS5yZXZlcnNlKCk7XG4gICAgY29uc3QgY3VycmVudElkeCA9IHBhcnRzLmluZGV4T2YodGhpcyk7XG4gICAgcmV0dXJuIHBhcnRzLmZpbmQoKHBhcnQsIGlkeCkgPT4gaWR4ID4gY3VycmVudElkeCAmJiBwYXJ0IGluc3RhbmNlb2YgRGF0ZVBhcnQpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRGF0ZVBhcnQ7XG5cblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgTWVyaWRpZW0gZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRIb3VycygodGhpcy5kYXRlLmdldEhvdXJzKCkgKyAxMikgJSAyNCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMudXAoKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtZXJpZGllbSA9IHRoaXMuZGF0ZS5nZXRIb3VycygpID4gMTIgPyAncG0nIDogJ2FtJztcbiAgICByZXR1cm4gL1xcQS8udGVzdCh0aGlzLnRva2VuKSA/IG1lcmlkaWVtLnRvVXBwZXJDYXNlKCkgOiBtZXJpZGllbTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1lcmlkaWVtO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY29uc3QgcG9zID0gbiA9PiB7XG4gIG4gPSBuICUgMTA7XG4gIHJldHVybiBuID09PSAxID8gJ3N0J1xuICAgICAgIDogbiA9PT0gMiA/ICduZCdcbiAgICAgICA6IG4gPT09IDMgPyAncmQnXG4gICAgICAgOiAndGgnO1xufVxuXG5jbGFzcyBEYXkgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXREYXRlKHRoaXMuZGF0ZS5nZXREYXRlKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldERhdGUodGhpcy5kYXRlLmdldERhdGUoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldERhdGUocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBkYXRlID0gdGhpcy5kYXRlLmdldERhdGUoKTtcbiAgICBsZXQgZGF5ID0gdGhpcy5kYXRlLmdldERheSgpO1xuICAgIHJldHVybiB0aGlzLnRva2VuID09PSAnREQnID8gU3RyaW5nKGRhdGUpLnBhZFN0YXJ0KDIsICcwJylcbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ0RvJyA/IGRhdGUgKyBwb3MoZGF0ZSlcbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ2QnID8gZGF5ICsgMVxuICAgICAgICAgOiB0aGlzLnRva2VuID09PSAnZGRkJyA/IHRoaXMubG9jYWxlcy53ZWVrZGF5c1Nob3J0W2RheV1cbiAgICAgICAgIDogdGhpcy50b2tlbiA9PT0gJ2RkZGQnID8gdGhpcy5sb2NhbGVzLndlZWtkYXlzW2RheV1cbiAgICAgICAgIDogZGF0ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERheTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIEhvdXJzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnModGhpcy5kYXRlLmdldEhvdXJzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEhvdXJzKHRoaXMuZGF0ZS5nZXRIb3VycygpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0SG91cnMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBob3VycyA9IHRoaXMuZGF0ZS5nZXRIb3VycygpO1xuICAgIGlmICgvaC8udGVzdCh0aGlzLnRva2VuKSlcbiAgICAgIGhvdXJzID0gKGhvdXJzICUgMTIpIHx8IDEyO1xuICAgIHJldHVybiB0aGlzLnRva2VuLmxlbmd0aCA+IDEgPyBTdHJpbmcoaG91cnMpLnBhZFN0YXJ0KDIsICcwJykgOiBob3VycztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhvdXJzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBEYXRlUGFydCA9IHJlcXVpcmUoJy4vZGF0ZXBhcnQnKTtcblxuY2xhc3MgTWlsbGlzZWNvbmRzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSArIDEpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLmRhdGUuc2V0TWlsbGlzZWNvbmRzKHRoaXMuZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbGxpc2Vjb25kcyhwYXJzZUludCh2YWwuc3Vic3RyKC0odGhpcy50b2tlbi5sZW5ndGgpKSkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIFN0cmluZyh0aGlzLmRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpLnBhZFN0YXJ0KDQsICcwJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic3RyKDAsIHRoaXMudG9rZW4ubGVuZ3RoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1pbGxpc2Vjb25kcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1pbnV0ZXMgZXh0ZW5kcyBEYXRlUGFydCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuXG4gIHVwKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRNaW51dGVzKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXModGhpcy5kYXRlLmdldE1pbnV0ZXMoKSAtIDEpO1xuICB9XG5cbiAgc2V0VG8odmFsKSB7XG4gICAgdGhpcy5kYXRlLnNldE1pbnV0ZXMocGFyc2VJbnQodmFsLnN1YnN0cigtMikpKTtcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIGxldCBtID0gdGhpcy5kYXRlLmdldE1pbnV0ZXMoKTtcbiAgICByZXR1cm4gdGhpcy50b2tlbi5sZW5ndGggPiAxID8gU3RyaW5nKG0pLnBhZFN0YXJ0KDIsICcwJykgOiBtO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTWludXRlcztcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgRGF0ZVBhcnQgPSByZXF1aXJlKCcuL2RhdGVwYXJ0Jyk7XG5cbmNsYXNzIE1vbnRoIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0TW9udGgodGhpcy5kYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldE1vbnRoKHRoaXMuZGF0ZS5nZXRNb250aCgpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB2YWwgPSBwYXJzZUludCh2YWwuc3Vic3RyKC0yKSkgLSAxO1xuICAgIHRoaXMuZGF0ZS5zZXRNb250aCh2YWwgPCAwID8gMCA6IHZhbCk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgbW9udGggPSB0aGlzLmRhdGUuZ2V0TW9udGgoKTtcbiAgICBsZXQgdGwgPSB0aGlzLnRva2VuLmxlbmd0aDtcbiAgICByZXR1cm4gdGwgPT09IDIgPyBTdHJpbmcobW9udGggKyAxKS5wYWRTdGFydCgyLCAnMCcpXG4gICAgICAgICAgIDogdGwgPT09IDMgPyB0aGlzLmxvY2FsZXMubW9udGhzU2hvcnRbbW9udGhdXG4gICAgICAgICAgICAgOiB0bCA9PT0gNCA/IHRoaXMubG9jYWxlcy5tb250aHNbbW9udGhdXG4gICAgICAgICAgICAgICA6IFN0cmluZyhtb250aCArIDEpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTW9udGg7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBTZWNvbmRzIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0U2Vjb25kcyh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpICsgMSk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIHRoaXMuZGF0ZS5zZXRTZWNvbmRzKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkgLSAxKTtcbiAgfVxuXG4gIHNldFRvKHZhbCkge1xuICAgIHRoaXMuZGF0ZS5zZXRTZWNvbmRzKHBhcnNlSW50KHZhbC5zdWJzdHIoLTIpKSk7XG4gIH1cblxuICB0b1N0cmluZygpIHtcbiAgICBsZXQgcyA9IHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID4gMSA/IFN0cmluZyhzKS5wYWRTdGFydCgyLCAnMCcpIDogcztcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNlY29uZHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IERhdGVQYXJ0ID0gcmVxdWlyZSgnLi9kYXRlcGFydCcpO1xuXG5jbGFzcyBZZWFyIGV4dGVuZHMgRGF0ZVBhcnQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkgKyAxKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy5kYXRlLnNldEZ1bGxZZWFyKHRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpIC0gMSk7XG4gIH1cblxuICBzZXRUbyh2YWwpIHtcbiAgICB0aGlzLmRhdGUuc2V0RnVsbFllYXIodmFsLnN1YnN0cigtNCkpO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgbGV0IHllYXIgPSBTdHJpbmcodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLnBhZFN0YXJ0KDQsICcwJyk7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4ubGVuZ3RoID09PSAyID8geWVhci5zdWJzdHIoLTIpIDogeWVhcjtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFllYXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBEYXRlUGFydDogcmVxdWlyZSgnLi9kYXRlcGFydCcpLFxuICBNZXJpZGllbTogcmVxdWlyZSgnLi9tZXJpZGllbScpLFxuICBEYXk6IHJlcXVpcmUoJy4vZGF5JyksXG4gIEhvdXJzOiByZXF1aXJlKCcuL2hvdXJzJyksXG4gIE1pbGxpc2Vjb25kczogcmVxdWlyZSgnLi9taWxsaXNlY29uZHMnKSxcbiAgTWludXRlczogcmVxdWlyZSgnLi9taW51dGVzJyksXG4gIE1vbnRoOiByZXF1aXJlKCcuL21vbnRoJyksXG4gIFNlY29uZHM6IHJlcXVpcmUoJy4vc2Vjb25kcycpLFxuICBZZWFyOiByZXF1aXJlKCcuL3llYXInKSxcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgUHJvbXB0ID0gcmVxdWlyZSgnLi9wcm9tcHQnKTtcbmNvbnN0IHsgc3R5bGUsIGNsZWFyLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IHsgRGF0ZVBhcnQsIE1lcmlkaWVtLCBEYXksIEhvdXJzLCBNaWxsaXNlY29uZHMsIE1pbnV0ZXMsIE1vbnRoLCBTZWNvbmRzLCBZZWFyIH0gPSByZXF1aXJlKCcuLi9kYXRlcGFydHMnKTtcblxuY29uc3QgcmVnZXggPSAvXFxcXCguKXxcIigoPzpcXFxcW1wiXFxcXF18W15cIl0pKylcInwoRFtEb10/fGR7Myw0fXxkKXwoTXsxLDR9KXwoWVkoPzpZWSk/KXwoW2FBXSl8KFtIaF17MSwyfSl8KG17MSwyfSl8KHN7MSwyfSl8KFN7MSw0fSl8Li9nO1xuY29uc3QgcmVnZXhHcm91cHMgPSB7XG4gIDE6ICh7dG9rZW59KSA9PiB0b2tlbi5yZXBsYWNlKC9cXFxcKC4pL2csICckMScpLFxuICAyOiAob3B0cykgPT4gbmV3IERheShvcHRzKSwgLy8gRGF5IC8vIFRPRE9cbiAgMzogKG9wdHMpID0+IG5ldyBNb250aChvcHRzKSwgLy8gTW9udGhcbiAgNDogKG9wdHMpID0+IG5ldyBZZWFyKG9wdHMpLCAvLyBZZWFyXG4gIDU6IChvcHRzKSA9PiBuZXcgTWVyaWRpZW0ob3B0cyksIC8vIEFNL1BNIC8vIFRPRE8gKHNwZWNpYWwpXG4gIDY6IChvcHRzKSA9PiBuZXcgSG91cnMob3B0cyksIC8vIEhvdXJzXG4gIDc6IChvcHRzKSA9PiBuZXcgTWludXRlcyhvcHRzKSwgLy8gTWludXRlc1xuICA4OiAob3B0cykgPT4gbmV3IFNlY29uZHMob3B0cyksIC8vIFNlY29uZHNcbiAgOTogKG9wdHMpID0+IG5ldyBNaWxsaXNlY29uZHMob3B0cyksIC8vIEZyYWN0aW9uYWwgc2Vjb25kc1xufVxuXG5jb25zdCBkZmx0TG9jYWxlcyA9IHtcbiAgbW9udGhzOiAnSmFudWFyeSxGZWJydWFyeSxNYXJjaCxBcHJpbCxNYXksSnVuZSxKdWx5LEF1Z3VzdCxTZXB0ZW1iZXIsT2N0b2JlcixOb3ZlbWJlcixEZWNlbWJlcicuc3BsaXQoJywnKSxcbiAgbW9udGhzU2hvcnQ6ICdKYW4sRmViLE1hcixBcHIsTWF5LEp1bixKdWwsQXVnLFNlcCxPY3QsTm92LERlYycuc3BsaXQoJywnKSxcbiAgd2Vla2RheXM6ICdTdW5kYXksTW9uZGF5LFR1ZXNkYXksV2VkbmVzZGF5LFRodXJzZGF5LEZyaWRheSxTYXR1cmRheScuc3BsaXQoJywnKSxcbiAgd2Vla2RheXNTaG9ydDogJ1N1bixNb24sVHVlLFdlZCxUaHUsRnJpLFNhdCcuc3BsaXQoJywnKVxufVxuXG5cbi8qKlxuICogRGF0ZVByb21wdCBCYXNlIEVsZW1lbnRcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbnNcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRzLm1lc3NhZ2UgTWVzc2FnZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluaXRpYWxdIEluZGV4IG9mIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5tYXNrXSBUaGUgZm9ybWF0IG1hc2tcbiAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0cy5sb2NhbGVzXSBUaGUgZGF0ZSBsb2NhbGVzXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZXJyb3JdIFRoZSBlcnJvciBtZXNzYWdlIHNob3duIG9uIGludmFsaWQgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB0aGUgc3VibWl0dGVkIHZhbHVlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgRGF0ZVByb21wdCBleHRlbmRzIFByb21wdCB7XG4gIGNvbnN0cnVjdG9yKG9wdHM9e30pIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgICB0aGlzLm1zZyA9IG9wdHMubWVzc2FnZTtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMubG9jYWxlcyA9IE9iamVjdC5hc3NpZ24oZGZsdExvY2FsZXMsIG9wdHMubG9jYWxlcyk7XG4gICAgdGhpcy5fZGF0ZSA9IG9wdHMuaW5pdGlhbCB8fCBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8ICdQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZSc7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcbiAgICB0aGlzLm1hc2sgPSBvcHRzLm1hc2sgfHwgJ1lZWVktTU0tREQgSEg6bW06c3MnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlXG4gIH1cblxuICBnZXQgZGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIHNldCBkYXRlKGRhdGUpIHtcbiAgICBpZiAoZGF0ZSkgdGhpcy5fZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpKTtcbiAgfVxuXG4gIHNldCBtYXNrKG1hc2spIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMucGFydHMgPSBbXTtcbiAgICB3aGlsZShyZXN1bHQgPSByZWdleC5leGVjKG1hc2spKSB7XG4gICAgICBsZXQgbWF0Y2ggPSByZXN1bHQuc2hpZnQoKTtcbiAgICAgIGxldCBpZHggPSByZXN1bHQuZmluZEluZGV4KGdyID0+IGdyICE9IG51bGwpO1xuICAgICAgdGhpcy5wYXJ0cy5wdXNoKGlkeCBpbiByZWdleEdyb3Vwc1xuICAgICAgICA/IHJlZ2V4R3JvdXBzW2lkeF0oeyB0b2tlbjogcmVzdWx0W2lkeF0gfHwgbWF0Y2gsIGRhdGU6IHRoaXMuZGF0ZSwgcGFydHM6IHRoaXMucGFydHMsIGxvY2FsZXM6IHRoaXMubG9jYWxlcyB9KVxuICAgICAgICA6IHJlc3VsdFtpZHhdIHx8IG1hdGNoKTtcbiAgICB9XG5cbiAgICBsZXQgcGFydHMgPSB0aGlzLnBhcnRzLnJlZHVjZSgoYXJyLCBpKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIGkgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBhcnJbYXJyLmxlbmd0aCAtIDFdID09PSAnc3RyaW5nJylcbiAgICAgICAgYXJyW2Fyci5sZW5ndGggLSAxXSArPSBpO1xuICAgICAgZWxzZSBhcnIucHVzaChpKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSwgW10pO1xuXG4gICAgdGhpcy5wYXJ0cy5zcGxpY2UoMCk7XG4gICAgdGhpcy5wYXJ0cy5wdXNoKC4uLnBhcnRzKTtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBtb3ZlQ3Vyc29yKG4pIHtcbiAgICB0aGlzLnR5cGVkID0gJyc7XG4gICAgdGhpcy5jdXJzb3IgPSBuO1xuICAgIHRoaXMuZmlyZSgpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuZmluZEluZGV4KHAgPT4gcCBpbnN0YW5jZW9mIERhdGVQYXJ0KSk7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5hYm9ydCgpO1xuICB9XG5cbiAgYWJvcnQoKSB7XG4gICAgdGhpcy5kb25lID0gdGhpcy5hYm9ydGVkID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgYXN5bmMgdmFsaWRhdGUoKSB7XG4gICAgbGV0IHZhbGlkID0gYXdhaXQgdGhpcy52YWxpZGF0b3IodGhpcy52YWx1ZSk7XG4gICAgaWYgKHR5cGVvZiB2YWxpZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSB2YWxpZDtcbiAgICAgIHZhbGlkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZXJyb3IgPSAhdmFsaWQ7XG4gIH1cblxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgYXdhaXQgdGhpcy52YWxpZGF0ZSgpO1xuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICB0aGlzLmNvbG9yID0gJ3JlZCc7XG4gICAgICB0aGlzLmZpcmUoKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgdGhpcy5hYm9ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnVwKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgdGhpcy50eXBlZCA9ICcnO1xuICAgIHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLmRvd24oKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICBsZXQgcHJldiA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLnByZXYoKTtcbiAgICBpZiAocHJldiA9PSBudWxsKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5tb3ZlQ3Vyc29yKHRoaXMucGFydHMuaW5kZXhPZihwcmV2KSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJpZ2h0KCkge1xuICAgIGxldCBuZXh0ID0gdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0ubmV4dCgpO1xuICAgIGlmIChuZXh0ID09IG51bGwpIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IodGhpcy5wYXJ0cy5pbmRleE9mKG5leHQpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICBsZXQgbmV4dCA9IHRoaXMucGFydHNbdGhpcy5jdXJzb3JdLm5leHQoKTtcbiAgICB0aGlzLm1vdmVDdXJzb3IobmV4dFxuICAgICAgPyB0aGlzLnBhcnRzLmluZGV4T2YobmV4dClcbiAgICAgIDogdGhpcy5wYXJ0cy5maW5kSW5kZXgoKHBhcnQpID0+IHBhcnQgaW5zdGFuY2VvZiBEYXRlUGFydCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMpIHtcbiAgICBpZiAoL1xcZC8udGVzdChjKSkge1xuICAgICAgdGhpcy50eXBlZCArPSBjO1xuICAgICAgdGhpcy5wYXJ0c1t0aGlzLmN1cnNvcl0uc2V0VG8odGhpcy50eXBlZCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIGVsc2UgdGhpcy5vdXQud3JpdGUoY2xlYXIodGhpcy5vdXRwdXRUZXh0LCB0aGlzLm91dC5jb2x1bW5zKSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAvLyBQcmludCBwcm9tcHRcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIoZmFsc2UpLFxuICAgICAgdGhpcy5wYXJ0cy5yZWR1Y2UoKGFyciwgcCwgaWR4KSA9PiBhcnIuY29uY2F0KGlkeCA9PT0gdGhpcy5jdXJzb3IgJiYgIXRoaXMuZG9uZSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUocC50b1N0cmluZygpKSA6IHApLCBbXSlcbiAgICAgICAgICAuam9pbignJylcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIC8vIFByaW50IGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0VGV4dCArPSB0aGlzLmVycm9yTXNnLnNwbGl0KCdcXG4nKS5yZWR1Y2UoXG4gICAgICAgICAgKGEsIGwsIGkpID0+IGEgKyBgXFxuJHtpID8gYCBgIDogZmlndXJlcy5wb2ludGVyU21hbGx9ICR7Y29sb3IucmVkKCkuaXRhbGljKGwpfWAsIGBgKTtcbiAgICB9XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGVQcm9tcHQ7XG4iLCJjb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuY29uc3QgeyBjdXJzb3IsIGVyYXNlIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5jb25zdCB7IHN0eWxlLCBmaWd1cmVzLCBjbGVhciwgbGluZXMgfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcblxuY29uc3QgaXNOdW1iZXIgPSAvWzAtOV0vO1xuY29uc3QgaXNEZWYgPSBhbnkgPT4gYW55ICE9PSB1bmRlZmluZWQ7XG5jb25zdCByb3VuZCA9IChudW1iZXIsIHByZWNpc2lvbikgPT4ge1xuICBsZXQgZmFjdG9yID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG4gIHJldHVybiBNYXRoLnJvdW5kKG51bWJlciAqIGZhY3RvcikgLyBmYWN0b3I7XG59XG5cbi8qKlxuICogTnVtYmVyUHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc3R5bGU9J2RlZmF1bHQnXSBSZW5kZXIgc3R5bGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5pbml0aWFsXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4PStJbmZpbml0eV0gTWF4IHZhbHVlXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWluPS1JbmZpbml0eV0gTWluIHZhbHVlXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMudmFsaWRhdGVdIFZhbGlkYXRlIGZ1bmN0aW9uXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lcnJvcl0gVGhlIGludmFsaWQgZXJyb3IgbGFiZWxcbiAqL1xuY2xhc3MgTnVtYmVyUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMudHJhbnNmb3JtID0gc3R5bGUucmVuZGVyKG9wdHMuc3R5bGUpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMuaW5pdGlhbCA9IGlzRGVmKG9wdHMuaW5pdGlhbCkgPyBvcHRzLmluaXRpYWwgOiAnJztcbiAgICB0aGlzLmZsb2F0ID0gISFvcHRzLmZsb2F0O1xuICAgIHRoaXMucm91bmQgPSBvcHRzLnJvdW5kIHx8IDI7XG4gICAgdGhpcy5pbmMgPSBvcHRzLmluY3JlbWVudCB8fCAxO1xuICAgIHRoaXMubWluID0gaXNEZWYob3B0cy5taW4pID8gb3B0cy5taW4gOiAtSW5maW5pdHk7XG4gICAgdGhpcy5tYXggPSBpc0RlZihvcHRzLm1heCkgPyBvcHRzLm1heCA6IEluZmluaXR5O1xuICAgIHRoaXMuZXJyb3JNc2cgPSBvcHRzLmVycm9yIHx8IGBQbGVhc2UgRW50ZXIgQSBWYWxpZCBWYWx1ZWA7XG4gICAgdGhpcy52YWxpZGF0b3IgPSBvcHRzLnZhbGlkYXRlIHx8ICgoKSA9PiB0cnVlKTtcbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuICAgIHRoaXMudmFsdWUgPSBgYDtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy5sYXN0SGl0ID0gMDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2V0IHZhbHVlKHYpIHtcbiAgICBpZiAoIXYgJiYgdiAhPT0gMCkge1xuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XG4gICAgICB0aGlzLnJlbmRlcmVkID0gY29sb3IuZ3JheSh0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7dGhpcy5pbml0aWFsfWApKTtcbiAgICAgIHRoaXMuX3ZhbHVlID0gYGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSB0aGlzLnRyYW5zZm9ybS5yZW5kZXIoYCR7cm91bmQodiwgdGhpcy5yb3VuZCl9YCk7XG4gICAgICB0aGlzLl92YWx1ZSA9IHJvdW5kKHYsIHRoaXMucm91bmQpO1xuICAgIH1cbiAgICB0aGlzLmZpcmUoKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwYXJzZSh4KSB7XG4gICAgcmV0dXJuIHRoaXMuZmxvYXQgPyBwYXJzZUZsb2F0KHgpIDogcGFyc2VJbnQoeCk7XG4gIH1cblxuICB2YWxpZChjKSB7XG4gICAgcmV0dXJuIGMgPT09IGAtYCB8fCBjID09PSBgLmAgJiYgdGhpcy5mbG9hdCB8fCBpc051bWJlci50ZXN0KGMpXG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgdGhpcy52YWx1ZSA9IGBgO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIGxldCB4ID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLnZhbHVlID0geCAhPT0gYGAgPyB4IDogdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoYFxcbmApO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIGFzeW5jIHZhbGlkYXRlKCkge1xuICAgIGxldCB2YWxpZCA9IGF3YWl0IHRoaXMudmFsaWRhdG9yKHRoaXMudmFsdWUpO1xuICAgIGlmICh0eXBlb2YgdmFsaWQgPT09IGBzdHJpbmdgKSB7XG4gICAgICB0aGlzLmVycm9yTXNnID0gdmFsaWQ7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmVycm9yID0gIXZhbGlkO1xuICB9XG5cbiAgYXN5bmMgc3VibWl0KCkge1xuICAgIGF3YWl0IHRoaXMudmFsaWRhdGUoKTtcbiAgICBpZiAodGhpcy5lcnJvcikge1xuICAgICAgdGhpcy5jb2xvciA9IGByZWRgO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgeCA9IHRoaXMudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IHggIT09IGBgID8geCA6IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKGBcXG5gKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgaWYodGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiAtIHRoaXMuaW5jO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA+PSB0aGlzLm1heCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgKz0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZG93bigpIHtcbiAgICB0aGlzLnR5cGVkID0gYGA7XG4gICAgaWYodGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbiArIHRoaXMuaW5jO1xuICAgIH1cbiAgICBpZiAodGhpcy52YWx1ZSA8PSB0aGlzLm1pbikgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWUgLT0gdGhpcy5pbmM7XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGxldCB2YWwgPSB0aGlzLnZhbHVlLnRvU3RyaW5nKCk7XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHJldHVybiB0aGlzLmJlbGwoKTtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5wYXJzZSgodmFsID0gdmFsLnNsaWNlKDAsIC0xKSkpIHx8IGBgO1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSAnJyAmJiB0aGlzLnZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1pbjtcbiAgICB9XG4gICAgdGhpcy5jb2xvciA9IGBjeWFuYDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5pbml0aWFsO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGlmICghdGhpcy52YWxpZChjKSkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gdGhpcy5sYXN0SGl0ID4gMTAwMCkgdGhpcy50eXBlZCA9IGBgOyAvLyAxcyBlbGFwc2VkXG4gICAgdGhpcy50eXBlZCArPSBjO1xuICAgIHRoaXMubGFzdEhpdCA9IG5vdztcbiAgICB0aGlzLmNvbG9yID0gYGN5YW5gO1xuXG4gICAgaWYgKGMgPT09IGAuYCkgcmV0dXJuIHRoaXMuZmlyZSgpO1xuXG4gICAgdGhpcy52YWx1ZSA9IE1hdGgubWluKHRoaXMucGFyc2UodGhpcy50eXBlZCksIHRoaXMubWF4KTtcbiAgICBpZiAodGhpcy52YWx1ZSA+IHRoaXMubWF4KSB0aGlzLnZhbHVlID0gdGhpcy5tYXg7XG4gICAgaWYgKHRoaXMudmFsdWUgPCB0aGlzLm1pbikgdGhpcy52YWx1ZSA9IHRoaXMubWluO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKCF0aGlzLmZpcnN0UmVuZGVyKSB7XG4gICAgICBpZiAodGhpcy5vdXRwdXRFcnJvcilcbiAgICAgICAgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmRvd24obGluZXModGhpcy5vdXRwdXRFcnJvciwgdGhpcy5vdXQuY29sdW1ucykgLSAxKSArIGNsZWFyKHRoaXMub3V0cHV0RXJyb3IsIHRoaXMub3V0LmNvbHVtbnMpKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIH1cbiAgICBzdXBlci5yZW5kZXIoKTtcbiAgICB0aGlzLm91dHB1dEVycm9yID0gJyc7XG5cbiAgICAvLyBQcmludCBwcm9tcHRcbiAgICB0aGlzLm91dHB1dFRleHQgPSBbXG4gICAgICBzdHlsZS5zeW1ib2wodGhpcy5kb25lLCB0aGlzLmFib3J0ZWQpLFxuICAgICAgY29sb3IuYm9sZCh0aGlzLm1zZyksXG4gICAgICBzdHlsZS5kZWxpbWl0ZXIodGhpcy5kb25lKSxcbiAgICAgICF0aGlzLmRvbmUgfHwgKCF0aGlzLmRvbmUgJiYgIXRoaXMucGxhY2Vob2xkZXIpXG4gICAgICAgICAgPyBjb2xvclt0aGlzLmNvbG9yXSgpLnVuZGVybGluZSh0aGlzLnJlbmRlcmVkKSA6IHRoaXMucmVuZGVyZWRcbiAgICBdLmpvaW4oYCBgKTtcblxuICAgIC8vIFByaW50IGVycm9yXG4gICAgaWYgKHRoaXMuZXJyb3IpIHtcbiAgICAgIHRoaXMub3V0cHV0RXJyb3IgKz0gdGhpcy5lcnJvck1zZy5zcGxpdChgXFxuYClcbiAgICAgICAgICAucmVkdWNlKChhLCBsLCBpKSA9PiBhICsgYFxcbiR7aSA/IGAgYCA6IGZpZ3VyZXMucG9pbnRlclNtYWxsfSAke2NvbG9yLnJlZCgpLml0YWxpYyhsKX1gLCBgYCk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCArIGN1cnNvci5zYXZlICsgdGhpcy5vdXRwdXRFcnJvciArIGN1cnNvci5yZXN0b3JlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE51bWJlclByb21wdDtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29sb3IgPSByZXF1aXJlKCdrbGV1cicpO1xuY29uc3QgeyBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IGNsZWFyLCBmaWd1cmVzLCBzdHlsZSwgd3JhcCwgZW50cmllc1RvRGlzcGxheSB9ID0gcmVxdWlyZSgnLi4vdXRpbCcpO1xuXG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5vcHRpb25zUGVyUGFnZT0xMF0gTWF4IG9wdGlvbnMgdG8gZGlzcGxheSBhdCBvbmNlXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW29wdHMuc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqL1xuY2xhc3MgTXVsdGlzZWxlY3RQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5jdXJzb3IgPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSBvcHRzLmN1cnNvciB8fCAwO1xuICAgIHRoaXMuaGludCA9IG9wdHMuaGludCB8fCAnJztcbiAgICB0aGlzLndhcm4gPSBvcHRzLndhcm4gfHwgJy0gVGhpcyBvcHRpb24gaXMgZGlzYWJsZWQgLSc7XG4gICAgdGhpcy5taW5TZWxlY3RlZCA9IG9wdHMubWluO1xuICAgIHRoaXMuc2hvd01pbkVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5tYXhDaG9pY2VzID0gb3B0cy5tYXg7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBvcHRzLmluc3RydWN0aW9ucztcbiAgICB0aGlzLm9wdGlvbnNQZXJQYWdlID0gb3B0cy5vcHRpb25zUGVyUGFnZSB8fCAxMDtcbiAgICB0aGlzLnZhbHVlID0gb3B0cy5jaG9pY2VzLm1hcCgoY2gsIGlkeCkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBjaCA9PT0gJ3N0cmluZycpXG4gICAgICAgIGNoID0ge3RpdGxlOiBjaCwgdmFsdWU6IGlkeH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogY2ggJiYgKGNoLnRpdGxlIHx8IGNoLnZhbHVlIHx8IGNoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGNoICYmIGNoLmRlc2NyaXB0aW9uLFxuICAgICAgICB2YWx1ZTogY2ggJiYgKGNoLnZhbHVlID09PSB1bmRlZmluZWQgPyBpZHggOiBjaC52YWx1ZSksXG4gICAgICAgIHNlbGVjdGVkOiBjaCAmJiBjaC5zZWxlY3RlZCxcbiAgICAgICAgZGlzYWJsZWQ6IGNoICYmIGNoLmRpc2FibGVkXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgaWYgKCFvcHRzLm92ZXJyaWRlUmVuZGVyKSB7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUubWFwKHYgPT4gIXYuc2VsZWN0ZWQpO1xuICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgc2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuZmlsdGVyKHYgPT4gdi5zZWxlY3RlZCk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYWJvcnQoKTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5maXJlKCk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICB0aGlzLm91dC53cml0ZSgnXFxuJyk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZVxuICAgICAgLmZpbHRlcihlID0+IGUuc2VsZWN0ZWQpO1xuICAgIGlmICh0aGlzLm1pblNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aCA8IHRoaXMubWluU2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2hvd01pbkVycm9yID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG4gICAgICB0aGlzLmFib3J0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmlyZSgpO1xuICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBmaXJzdCgpIHtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxhc3QoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLnZhbHVlLmxlbmd0aCAtIDE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuICBuZXh0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gKHRoaXMuY3Vyc29yICsgMSkgJSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSAwKSB7XG4gICAgICB0aGlzLmN1cnNvciA9IHRoaXMudmFsdWUubGVuZ3RoIC0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3ItLTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSB0aGlzLnZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJzb3IrKztcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGxlZnQoKSB7XG4gICAgdGhpcy52YWx1ZVt0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgaGFuZGxlU3BhY2VUb2dnbGUoKSB7XG4gICAgY29uc3QgdiA9IHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdO1xuXG4gICAgaWYgKHYuc2VsZWN0ZWQpIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIGlmICh2LmRpc2FibGVkIHx8IHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlQWxsKCkge1xuICAgIGlmICh0aGlzLm1heENob2ljZXMgIT09IHVuZGVmaW5lZCB8fCB0aGlzLnZhbHVlW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1NlbGVjdGVkID0gIXRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLnNlbGVjdGVkO1xuICAgIHRoaXMudmFsdWUuZmlsdGVyKHYgPT4gIXYuZGlzYWJsZWQpLmZvckVhY2godiA9PiB2LnNlbGVjdGVkID0gbmV3U2VsZWN0ZWQpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBfKGMsIGtleSkge1xuICAgIGlmIChjID09PSAnICcpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3BhY2VUb2dnbGUoKTtcbiAgICB9IGVsc2UgaWYgKGMgPT09ICdhJykge1xuICAgICAgdGhpcy50b2dnbGVBbGwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pbnN0cnVjdGlvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmluc3RydWN0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RydWN0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdHJ1Y3Rpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuICdcXG5JbnN0cnVjdGlvbnM6XFxuJ1xuICAgICAgICArIGAgICAgJHtmaWd1cmVzLmFycm93VXB9LyR7ZmlndXJlcy5hcnJvd0Rvd259OiBIaWdobGlnaHQgb3B0aW9uXFxuYFxuICAgICAgICArIGAgICAgJHtmaWd1cmVzLmFycm93TGVmdH0vJHtmaWd1cmVzLmFycm93UmlnaHR9L1tzcGFjZV06IFRvZ2dsZSBzZWxlY3Rpb25cXG5gXG4gICAgICAgICsgKHRoaXMubWF4Q2hvaWNlcyA9PT0gdW5kZWZpbmVkID8gYCAgICBhOiBUb2dnbGUgYWxsXFxuYCA6ICcnKVxuICAgICAgICArIGAgICAgZW50ZXIvcmV0dXJuOiBDb21wbGV0ZSBhbnN3ZXJgO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJPcHRpb24oY3Vyc29yLCB2LCBpLCBhcnJvd0luZGljYXRvcikge1xuICAgIGNvbnN0IHByZWZpeCA9ICh2LnNlbGVjdGVkID8gY29sb3IuZ3JlZW4oZmlndXJlcy5yYWRpb09uKSA6IGZpZ3VyZXMucmFkaW9PZmYpICsgJyAnICsgYXJyb3dJbmRpY2F0b3IgKyAnICc7XG4gICAgbGV0IHRpdGxlLCBkZXNjO1xuXG4gICAgaWYgKHYuZGlzYWJsZWQpIHtcbiAgICAgIHRpdGxlID0gY3Vyc29yID09PSBpID8gY29sb3IuZ3JheSgpLnVuZGVybGluZSh2LnRpdGxlKSA6IGNvbG9yLnN0cmlrZXRocm91Z2goKS5ncmF5KHYudGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgICAgaWYgKGN1cnNvciA9PT0gaSAmJiB2LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2MgPSBgIC0gJHt2LmRlc2NyaXB0aW9ufWA7XG4gICAgICAgIGlmIChwcmVmaXgubGVuZ3RoICsgdGl0bGUubGVuZ3RoICsgZGVzYy5sZW5ndGggPj0gdGhpcy5vdXQuY29sdW1uc1xuICAgICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgZGVzYyA9ICdcXG4nICsgd3JhcCh2LmRlc2NyaXB0aW9uLCB7IG1hcmdpbjogcHJlZml4Lmxlbmd0aCwgd2lkdGg6IHRoaXMub3V0LmNvbHVtbnMgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcHJlZml4ICsgdGl0bGUgKyBjb2xvci5ncmF5KGRlc2MgfHwgJycpO1xuICB9XG5cbiAgLy8gc2hhcmVkIHdpdGggYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RcbiAgcGFnaW5hdGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjb2xvci5yZWQoJ05vIG1hdGNoZXMgZm9yIHRoaXMgcXVlcnkuJyk7XG4gICAgfVxuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5jdXJzb3IsIG9wdGlvbnMubGVuZ3RoLCB0aGlzLm9wdGlvbnNQZXJQYWdlKTtcbiAgICBsZXQgcHJlZml4LCBzdHlsZWRPcHRpb25zID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gc3RhcnRJbmRleDsgaSA8IGVuZEluZGV4OyBpKyspIHtcbiAgICAgIGlmIChpID09PSBzdGFydEluZGV4ICYmIHN0YXJ0SW5kZXggPiAwKSB7XG4gICAgICAgIHByZWZpeCA9IGZpZ3VyZXMuYXJyb3dVcDtcbiAgICAgIH0gZWxzZSBpZiAoaSA9PT0gZW5kSW5kZXggLSAxICYmIGVuZEluZGV4IDwgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcHJlZml4ID0gZmlndXJlcy5hcnJvd0Rvd247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmVmaXggPSAnICc7XG4gICAgICB9XG4gICAgICBzdHlsZWRPcHRpb25zLnB1c2godGhpcy5yZW5kZXJPcHRpb24odGhpcy5jdXJzb3IsIG9wdGlvbnNbaV0sIGksIHByZWZpeCkpO1xuICAgIH1cblxuICAgIHJldHVybiAnXFxuJyArIHN0eWxlZE9wdGlvbnMuam9pbignXFxuJyk7XG4gIH1cblxuICAvLyBzaGFyZWQgd2l0aCBhdXRvY29tbGV0ZU11bHRpc2VsZWN0XG4gIHJlbmRlck9wdGlvbnMob3B0aW9ucykge1xuICAgIGlmICghdGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZU9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHJlbmRlckRvbmVPckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICByZXR1cm4gdGhpcy52YWx1ZVxuICAgICAgICAuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZClcbiAgICAgICAgLm1hcCh2ID0+IHYudGl0bGUpXG4gICAgICAgIC5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IFtjb2xvci5ncmF5KHRoaXMuaGludCksIHRoaXMucmVuZGVySW5zdHJ1Y3Rpb25zKCldO1xuXG4gICAgaWYgKHRoaXMudmFsdWVbdGhpcy5jdXJzb3JdLmRpc2FibGVkKSB7XG4gICAgICBvdXRwdXQucHVzaChjb2xvci55ZWxsb3codGhpcy53YXJuKSk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQuam9pbignICcpO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmZpcnN0UmVuZGVyKSB0aGlzLm91dC53cml0ZShjdXJzb3IuaGlkZSk7XG4gICAgc3VwZXIucmVuZGVyKCk7XG5cbiAgICAvLyBwcmludCBwcm9tcHRcbiAgICBsZXQgcHJvbXB0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKClcbiAgICBdLmpvaW4oJyAnKTtcbiAgICBpZiAodGhpcy5zaG93TWluRXJyb3IpIHtcbiAgICAgIHByb21wdCArPSBjb2xvci5yZWQoYFlvdSBtdXN0IHNlbGVjdCBhIG1pbmltdW0gb2YgJHt0aGlzLm1pblNlbGVjdGVkfSBjaG9pY2VzLmApO1xuICAgICAgdGhpcy5zaG93TWluRXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgcHJvbXB0ICs9IHRoaXMucmVuZGVyT3B0aW9ucyh0aGlzLnZhbHVlKTtcblxuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gTXVsdGlzZWxlY3RQcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IFByb21wdCA9IHJlcXVpcmUoJy4vcHJvbXB0Jyk7XG5jb25zdCB7IGVyYXNlLCBjdXJzb3IgfSA9IHJlcXVpcmUoJ3Npc3RlcmFuc2knKTtcbmNvbnN0IHsgc3R5bGUsIGNsZWFyLCBmaWd1cmVzLCB3cmFwLCBlbnRyaWVzVG9EaXNwbGF5IH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG5cbmNvbnN0IGdldFZhbCA9IChhcnIsIGkpID0+IGFycltpXSAmJiAoYXJyW2ldLnZhbHVlIHx8IGFycltpXS50aXRsZSB8fCBhcnJbaV0pO1xuY29uc3QgZ2V0VGl0bGUgPSAoYXJyLCBpKSA9PiBhcnJbaV0gJiYgKGFycltpXS50aXRsZSB8fCBhcnJbaV0udmFsdWUgfHwgYXJyW2ldKTtcbmNvbnN0IGdldEluZGV4ID0gKGFyciwgdmFsT3JUaXRsZSkgPT4ge1xuICBjb25zdCBpbmRleCA9IGFyci5maW5kSW5kZXgoZWwgPT4gZWwudmFsdWUgPT09IHZhbE9yVGl0bGUgfHwgZWwudGl0bGUgPT09IHZhbE9yVGl0bGUpO1xuICByZXR1cm4gaW5kZXggPiAtMSA/IGluZGV4IDogdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBUZXh0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgYXV0by1jb21wbGV0ZSBjaG9pY2VzIG9iamVjdHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLnN1Z2dlc3RdIEZpbHRlciBmdW5jdGlvbi4gRGVmYXVsdHMgdG8gc29ydCBieSB0aXRsZVxuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmxpbWl0PTEwXSBNYXggbnVtYmVyIG9mIHJlc3VsdHMgdG8gc2hvd1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zdHlsZT0nZGVmYXVsdCddIFJlbmRlciBzdHlsZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmZhbGxiYWNrXSBGYWxsYmFjayBtZXNzYWdlIC0gaW5pdGlhbCB0byBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuaW5pdGlhbF0gSW5kZXggb2YgdGhlIGRlZmF1bHQgdmFsdWVcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuY2xlYXJGaXJzdF0gVGhlIGZpcnN0IEVTQ0FQRSBrZXlwcmVzcyB3aWxsIGNsZWFyIHRoZSBpbnB1dFxuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZGluXSBUaGUgUmVhZGFibGUgc3RyZWFtIHRvIGxpc3RlbiB0b1xuICogQHBhcmFtIHtTdHJlYW19IFtvcHRzLnN0ZG91dF0gVGhlIFdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSByZWFkbGluZSBkYXRhIHRvXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9NYXRjaGVzXSBUaGUgbm8gbWF0Y2hlcyBmb3VuZCBsYWJlbFxuICovXG5jbGFzcyBBdXRvY29tcGxldGVQcm9tcHQgZXh0ZW5kcyBQcm9tcHQge1xuICBjb25zdHJ1Y3RvcihvcHRzPXt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG4gICAgdGhpcy5tc2cgPSBvcHRzLm1lc3NhZ2U7XG4gICAgdGhpcy5zdWdnZXN0ID0gb3B0cy5zdWdnZXN0O1xuICAgIHRoaXMuY2hvaWNlcyA9IG9wdHMuY2hvaWNlcztcbiAgICB0aGlzLmluaXRpYWwgPSB0eXBlb2Ygb3B0cy5pbml0aWFsID09PSAnbnVtYmVyJ1xuICAgICAgPyBvcHRzLmluaXRpYWxcbiAgICAgIDogZ2V0SW5kZXgob3B0cy5jaG9pY2VzLCBvcHRzLmluaXRpYWwpO1xuICAgIHRoaXMuc2VsZWN0ID0gdGhpcy5pbml0aWFsIHx8IG9wdHMuY3Vyc29yIHx8IDA7XG4gICAgdGhpcy5pMThuID0geyBub01hdGNoZXM6IG9wdHMubm9NYXRjaGVzIHx8ICdubyBtYXRjaGVzIGZvdW5kJyB9O1xuICAgIHRoaXMuZmFsbGJhY2sgPSBvcHRzLmZhbGxiYWNrIHx8IHRoaXMuaW5pdGlhbDtcbiAgICB0aGlzLmNsZWFyRmlyc3QgPSBvcHRzLmNsZWFyRmlyc3QgfHwgZmFsc2U7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuaW5wdXQgPSAnJztcbiAgICB0aGlzLmxpbWl0ID0gb3B0cy5saW1pdCB8fCAxMDtcbiAgICB0aGlzLmN1cnNvciA9IDA7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBzdHlsZS5yZW5kZXIob3B0cy5zdHlsZSk7XG4gICAgdGhpcy5zY2FsZSA9IHRoaXMudHJhbnNmb3JtLnNjYWxlO1xuICAgIHRoaXMucmVuZGVyID0gdGhpcy5yZW5kZXIuYmluZCh0aGlzKTtcbiAgICB0aGlzLmNvbXBsZXRlID0gdGhpcy5jb21wbGV0ZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5jb21wbGV0ZSh0aGlzLnJlbmRlcik7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHNldCBmYWxsYmFjayhmYikge1xuICAgIHRoaXMuX2ZiID0gTnVtYmVyLmlzU2FmZUludGVnZXIocGFyc2VJbnQoZmIpKSA/IHBhcnNlSW50KGZiKSA6IGZiO1xuICB9XG5cbiAgZ2V0IGZhbGxiYWNrKCkge1xuICAgIGxldCBjaG9pY2U7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mYiA9PT0gJ251bWJlcicpXG4gICAgICBjaG9pY2UgPSB0aGlzLmNob2ljZXNbdGhpcy5fZmJdO1xuICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLl9mYiA9PT0gJ3N0cmluZycpXG4gICAgICBjaG9pY2UgPSB7IHRpdGxlOiB0aGlzLl9mYiB9O1xuICAgIHJldHVybiBjaG9pY2UgfHwgdGhpcy5fZmIgfHwgeyB0aXRsZTogdGhpcy5pMThuLm5vTWF0Y2hlcyB9O1xuICB9XG5cbiAgbW92ZVNlbGVjdChpKSB7XG4gICAgdGhpcy5zZWxlY3QgPSBpO1xuICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApXG4gICAgICB0aGlzLnZhbHVlID0gZ2V0VmFsKHRoaXMuc3VnZ2VzdGlvbnMsIGkpO1xuICAgIGVsc2UgdGhpcy52YWx1ZSA9IHRoaXMuZmFsbGJhY2sudmFsdWU7XG4gICAgdGhpcy5maXJlKCk7XG4gIH1cblxuICBhc3luYyBjb21wbGV0ZShjYikge1xuICAgIGNvbnN0IHAgPSAodGhpcy5jb21wbGV0aW5nID0gdGhpcy5zdWdnZXN0KHRoaXMuaW5wdXQsIHRoaXMuY2hvaWNlcykpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gYXdhaXQgcDtcblxuICAgIGlmICh0aGlzLmNvbXBsZXRpbmcgIT09IHApIHJldHVybjtcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbnNcbiAgICAgIC5tYXAoKHMsIGksIGFycikgPT4gKHsgdGl0bGU6IGdldFRpdGxlKGFyciwgaSksIHZhbHVlOiBnZXRWYWwoYXJyLCBpKSwgZGVzY3JpcHRpb246IHMuZGVzY3JpcHRpb24gfSkpO1xuICAgIHRoaXMuY29tcGxldGluZyA9IGZhbHNlO1xuICAgIGNvbnN0IGwgPSBNYXRoLm1heChzdWdnZXN0aW9ucy5sZW5ndGggLSAxLCAwKTtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4obCwgdGhpcy5zZWxlY3QpKTtcblxuICAgIGNiICYmIGNiKCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLmlucHV0ID0gJyc7XG4gICAgdGhpcy5jb21wbGV0ZSgoKSA9PiB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5pbml0aWFsICE9PSB2b2lkIDAgPyB0aGlzLmluaXRpYWwgOiAwKTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgaWYgKHRoaXMuY2xlYXJGaXJzdCAmJiB0aGlzLmlucHV0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kb25lID0gdGhpcy5leGl0ZWQgPSB0cnVlOyBcbiAgICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5maXJlKCk7XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuZG9uZSA9IHRoaXMuYWJvcnRlZCA9IHRydWU7XG4gICAgdGhpcy5leGl0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICAgIHRoaXMub3V0LndyaXRlKCdcXG4nKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBzdWJtaXQoKSB7XG4gICAgdGhpcy5kb25lID0gdHJ1ZTtcbiAgICB0aGlzLmFib3J0ZWQgPSB0aGlzLmV4aXRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgbGV0IHMxID0gdGhpcy5pbnB1dC5zbGljZSgwLCB0aGlzLmN1cnNvcik7XG4gICAgbGV0IHMyID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmN1cnNvcik7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7Y30ke3MyfWA7XG4gICAgdGhpcy5jdXJzb3IgPSBzMS5sZW5ndGgrMTtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZGVsZXRlKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gMCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3ItMSk7XG4gICAgbGV0IHMyID0gdGhpcy5pbnB1dC5zbGljZSh0aGlzLmN1cnNvcik7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLmN1cnNvciA9IHRoaXMuY3Vyc29yLTE7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZUZvcndhcmQoKSB7XG4gICAgaWYodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIGxldCBzMSA9IHRoaXMuaW5wdXQuc2xpY2UoMCwgdGhpcy5jdXJzb3IpO1xuICAgIGxldCBzMiA9IHRoaXMuaW5wdXQuc2xpY2UodGhpcy5jdXJzb3IrMSk7XG4gICAgdGhpcy5pbnB1dCA9IGAke3MxfSR7czJ9YDtcbiAgICB0aGlzLmNvbXBsZXRlKHRoaXMucmVuZGVyKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZmlyc3QoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KDApO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICB1cCgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3QgPT09IDApIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCh0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QodGhpcy5zZWxlY3QgLSAxKTtcbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRvd24oKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ID09PSB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMubW92ZVNlbGVjdCgwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb3ZlU2VsZWN0KHRoaXMuc2VsZWN0ICsgMSk7XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdCA9PT0gdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICB0aGlzLm1vdmVTZWxlY3QoMCk7XG4gICAgfSBlbHNlIHRoaXMubW92ZVNlbGVjdCh0aGlzLnNlbGVjdCArIDEpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLm1vdmVTZWxlY3QoTWF0aC5taW4odGhpcy5zZWxlY3QgKyB0aGlzLmxpbWl0LCB0aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aCAtIDEpKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcHJldlBhZ2UoKSB7XG4gICAgdGhpcy5tb3ZlU2VsZWN0KE1hdGgubWF4KHRoaXMuc2VsZWN0IC0gdGhpcy5saW1pdCwgMCkpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsZWZ0KCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA8PSAwKSByZXR1cm4gdGhpcy5iZWxsKCk7XG4gICAgdGhpcy5jdXJzb3IgPSB0aGlzLmN1cnNvci0xO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICByaWdodCgpIHtcbiAgICBpZiAodGhpcy5jdXJzb3IqdGhpcy5zY2FsZSA+PSB0aGlzLnJlbmRlcmVkLmxlbmd0aCkgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5jdXJzb3IrMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKHYsIGhvdmVyZWQsIGlzU3RhcnQsIGlzRW5kKSB7XG4gICAgbGV0IGRlc2M7XG4gICAgbGV0IHByZWZpeCA9IGlzU3RhcnQgPyBmaWd1cmVzLmFycm93VXAgOiBpc0VuZCA/IGZpZ3VyZXMuYXJyb3dEb3duIDogJyAnO1xuICAgIGxldCB0aXRsZSA9IGhvdmVyZWQgPyBjb2xvci5jeWFuKCkudW5kZXJsaW5lKHYudGl0bGUpIDogdi50aXRsZTtcbiAgICBwcmVmaXggPSAoaG92ZXJlZCA/IGNvbG9yLmN5YW4oZmlndXJlcy5wb2ludGVyKSArICcgJyA6ICcgICcpICsgcHJlZml4O1xuICAgIGlmICh2LmRlc2NyaXB0aW9uKSB7XG4gICAgICBkZXNjID0gYCAtICR7di5kZXNjcmlwdGlvbn1gO1xuICAgICAgaWYgKHByZWZpeC5sZW5ndGggKyB0aXRsZS5sZW5ndGggKyBkZXNjLmxlbmd0aCA+PSB0aGlzLm91dC5jb2x1bW5zXG4gICAgICAgIHx8IHYuZGVzY3JpcHRpb24uc3BsaXQoL1xccj9cXG4vKS5sZW5ndGggPiAxKSB7XG4gICAgICAgIGRlc2MgPSAnXFxuJyArIHdyYXAodi5kZXNjcmlwdGlvbiwgeyBtYXJnaW46IDMsIHdpZHRoOiB0aGlzLm91dC5jb2x1bW5zIH0pXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmVmaXggKyAnICcgKyB0aXRsZSArIGNvbG9yLmdyYXkoZGVzYyB8fCAnJyk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgbGV0IHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSA9IGVudHJpZXNUb0Rpc3BsYXkodGhpcy5zZWxlY3QsIHRoaXMuY2hvaWNlcy5sZW5ndGgsIHRoaXMubGltaXQpO1xuXG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkLCB0aGlzLmV4aXRlZCksXG4gICAgICBjb2xvci5ib2xkKHRoaXMubXNnKSxcbiAgICAgIHN0eWxlLmRlbGltaXRlcih0aGlzLmNvbXBsZXRpbmcpLFxuICAgICAgdGhpcy5kb25lICYmIHRoaXMuc3VnZ2VzdGlvbnNbdGhpcy5zZWxlY3RdXG4gICAgICAgID8gdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdF0udGl0bGVcbiAgICAgICAgOiB0aGlzLnJlbmRlcmVkID0gdGhpcy50cmFuc2Zvcm0ucmVuZGVyKHRoaXMuaW5wdXQpXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICBpZiAoIXRoaXMuZG9uZSkge1xuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLnN1Z2dlc3Rpb25zXG4gICAgICAgIC5zbGljZShzdGFydEluZGV4LCBlbmRJbmRleClcbiAgICAgICAgLm1hcCgoaXRlbSwgaSkgPT4gIHRoaXMucmVuZGVyT3B0aW9uKGl0ZW0sXG4gICAgICAgICAgdGhpcy5zZWxlY3QgPT09IGkgKyBzdGFydEluZGV4LFxuICAgICAgICAgIGkgPT09IDAgJiYgc3RhcnRJbmRleCA+IDAsXG4gICAgICAgICAgaSArIHN0YXJ0SW5kZXggPT09IGVuZEluZGV4IC0gMSAmJiBlbmRJbmRleCA8IHRoaXMuY2hvaWNlcy5sZW5ndGgpKVxuICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICB0aGlzLm91dHB1dFRleHQgKz0gYFxcbmAgKyAoc3VnZ2VzdGlvbnMgfHwgY29sb3IuZ3JheSh0aGlzLmZhbGxiYWNrLnRpdGxlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXQud3JpdGUoZXJhc2UubGluZSArIGN1cnNvci50bygwKSArIHRoaXMub3V0cHV0VGV4dCk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBBdXRvY29tcGxldGVQcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGNvbG9yID0gcmVxdWlyZSgna2xldXInKTtcbmNvbnN0IHsgY3Vyc29yIH0gPSByZXF1aXJlKCdzaXN0ZXJhbnNpJyk7XG5jb25zdCBNdWx0aXNlbGVjdFByb21wdCA9IHJlcXVpcmUoJy4vbXVsdGlzZWxlY3QnKTtcbmNvbnN0IHsgY2xlYXIsIHN0eWxlLCBmaWd1cmVzIH0gPSByZXF1aXJlKCcuLi91dGlsJyk7XG4vKipcbiAqIE11bHRpc2VsZWN0UHJvbXB0IEJhc2UgRWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uc1xuICogQHBhcmFtIHtTdHJpbmd9IG9wdHMubWVzc2FnZSBNZXNzYWdlXG4gKiBAcGFyYW0ge0FycmF5fSBvcHRzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlIG9iamVjdHNcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5oaW50XSBIaW50IHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy53YXJuXSBIaW50IHNob3duIGZvciBkaXNhYmxlZCBjaG9pY2VzXG4gKiBAcGFyYW0ge051bWJlcn0gW29wdHMubWF4XSBNYXggY2hvaWNlc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmN1cnNvcj0wXSBDdXJzb3Igc3RhcnQgcG9zaXRpb25cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICovXG5jbGFzcyBBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdCBleHRlbmRzIE11bHRpc2VsZWN0UHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIG9wdHMub3ZlcnJpZGVSZW5kZXIgPSB0cnVlO1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcignJywgdGhpcy5vdXQuY29sdW1ucyk7XG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLnZhbHVlO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBsYXN0KCkge1xuICAgIHRoaXMuY3Vyc29yID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG4gIG5leHQoKSB7XG4gICAgdGhpcy5jdXJzb3IgPSAodGhpcy5jdXJzb3IgKyAxKSAlIHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aDtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgdXAoKSB7XG4gICAgaWYgKHRoaXMuY3Vyc29yID09PSAwKSB7XG4gICAgICB0aGlzLmN1cnNvciA9IHRoaXMuZmlsdGVyZWRPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3Vyc29yLS07XG4gICAgfVxuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBkb3duKCkge1xuICAgIGlmICh0aGlzLmN1cnNvciA9PT0gdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5jdXJzb3IgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1cnNvcisrO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgbGVmdCgpIHtcbiAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1t0aGlzLmN1cnNvcl0uc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgcmlnaHQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5zZWxlY3RlZCA9IHRydWU7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIGRlbGV0ZSgpIHtcbiAgICBpZiAodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cigwLCB0aGlzLmlucHV0VmFsdWUubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZpbHRlcmVkT3B0aW9ucygpIHtcbiAgICBjb25zdCBjdXJyZW50SGlnaGxpZ2h0ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy52YWx1ZVxuICAgICAgLmZpbHRlcih2ID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIGlmICh0eXBlb2Ygdi50aXRsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy5pbnB1dFZhbHVlLnRvTG93ZXJDYXNlKCkpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHYudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodi52YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRoaXMuaW5wdXRWYWx1ZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSk7XG4gICAgY29uc3QgbmV3SGlnaGxpZ2h0SW5kZXggPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5maW5kSW5kZXgodiA9PiB2ID09PSBjdXJyZW50SGlnaGxpZ2h0KVxuICAgIHRoaXMuY3Vyc29yID0gbmV3SGlnaGxpZ2h0SW5kZXggPCAwID8gMCA6IG5ld0hpZ2hsaWdodEluZGV4O1xuICAgIHRoaXMucmVuZGVyKCk7XG4gIH1cblxuICBoYW5kbGVTcGFjZVRvZ2dsZSgpIHtcbiAgICBjb25zdCB2ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5jdXJzb3JdO1xuXG4gICAgaWYgKHYuc2VsZWN0ZWQpIHtcbiAgICAgIHYuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfSBlbHNlIGlmICh2LmRpc2FibGVkIHx8IHRoaXMudmFsdWUuZmlsdGVyKGUgPT4gZS5zZWxlY3RlZCkubGVuZ3RoID49IHRoaXMubWF4Q2hvaWNlcykge1xuICAgICAgcmV0dXJuIHRoaXMuYmVsbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2LnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSW5wdXRDaGFuZ2UoYykge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuaW5wdXRWYWx1ZSArIGM7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMgPT09ICcgJykge1xuICAgICAgdGhpcy5oYW5kbGVTcGFjZVRvZ2dsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUlucHV0Q2hhbmdlKGMpO1xuICAgIH1cbiAgfVxuXG4gIHJlbmRlckluc3RydWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5pbnN0cnVjdGlvbnMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmluc3RydWN0aW9ucykge1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RydWN0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdHJ1Y3Rpb25zO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGBcbkluc3RydWN0aW9uczpcbiAgICAke2ZpZ3VyZXMuYXJyb3dVcH0vJHtmaWd1cmVzLmFycm93RG93bn06IEhpZ2hsaWdodCBvcHRpb25cbiAgICAke2ZpZ3VyZXMuYXJyb3dMZWZ0fS8ke2ZpZ3VyZXMuYXJyb3dSaWdodH0vW3NwYWNlXTogVG9nZ2xlIHNlbGVjdGlvblxuICAgIFthLGIsY10vZGVsZXRlOiBGaWx0ZXIgY2hvaWNlc1xuICAgIGVudGVyL3JldHVybjogQ29tcGxldGUgYW5zd2VyXG5gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICByZW5kZXJDdXJyZW50SW5wdXQoKSB7XG4gICAgcmV0dXJuIGBcbkZpbHRlcmVkIHJlc3VsdHMgZm9yOiAke3RoaXMuaW5wdXRWYWx1ZSA/IHRoaXMuaW5wdXRWYWx1ZSA6IGNvbG9yLmdyYXkoJ0VudGVyIHNvbWV0aGluZyB0byBmaWx0ZXInKX1cXG5gO1xuICB9XG5cbiAgcmVuZGVyT3B0aW9uKGN1cnNvciwgdiwgaSkge1xuICAgIGxldCB0aXRsZTtcbiAgICBpZiAodi5kaXNhYmxlZCkgdGl0bGUgPSBjdXJzb3IgPT09IGkgPyBjb2xvci5ncmF5KCkudW5kZXJsaW5lKHYudGl0bGUpIDogY29sb3Iuc3RyaWtldGhyb3VnaCgpLmdyYXkodi50aXRsZSk7XG4gICAgZWxzZSB0aXRsZSA9IGN1cnNvciA9PT0gaSA/IGNvbG9yLmN5YW4oKS51bmRlcmxpbmUodi50aXRsZSkgOiB2LnRpdGxlO1xuICAgIHJldHVybiAodi5zZWxlY3RlZCA/IGNvbG9yLmdyZWVuKGZpZ3VyZXMucmFkaW9PbikgOiBmaWd1cmVzLnJhZGlvT2ZmKSArICcgICcgKyB0aXRsZVxuICB9XG5cbiAgcmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlXG4gICAgICAgIC5maWx0ZXIoZSA9PiBlLnNlbGVjdGVkKVxuICAgICAgICAubWFwKHYgPT4gdi50aXRsZSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0cHV0ID0gW2NvbG9yLmdyYXkodGhpcy5oaW50KSwgdGhpcy5yZW5kZXJJbnN0cnVjdGlvbnMoKSwgdGhpcy5yZW5kZXJDdXJyZW50SW5wdXQoKV07XG5cbiAgICBpZiAodGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoICYmIHRoaXMuZmlsdGVyZWRPcHRpb25zW3RoaXMuY3Vyc29yXS5kaXNhYmxlZCkge1xuICAgICAgb3V0cHV0LnB1c2goY29sb3IueWVsbG93KHRoaXMud2FybikpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0LmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBpZiAodGhpcy5jbG9zZWQpIHJldHVybjtcbiAgICBpZiAodGhpcy5maXJzdFJlbmRlcikgdGhpcy5vdXQud3JpdGUoY3Vyc29yLmhpZGUpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgLy8gcHJpbnQgcHJvbXB0XG5cbiAgICBsZXQgcHJvbXB0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKGZhbHNlKSxcbiAgICAgIHRoaXMucmVuZGVyRG9uZU9ySW5zdHJ1Y3Rpb25zKClcbiAgICBdLmpvaW4oJyAnKTtcblxuICAgIGlmICh0aGlzLnNob3dNaW5FcnJvcikge1xuICAgICAgcHJvbXB0ICs9IGNvbG9yLnJlZChgWW91IG11c3Qgc2VsZWN0IGEgbWluaW11bSBvZiAke3RoaXMubWluU2VsZWN0ZWR9IGNob2ljZXMuYCk7XG4gICAgICB0aGlzLnNob3dNaW5FcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgICBwcm9tcHQgKz0gdGhpcy5yZW5kZXJPcHRpb25zKHRoaXMuZmlsdGVyZWRPcHRpb25zKTtcblxuICAgIHRoaXMub3V0LndyaXRlKHRoaXMuY2xlYXIgKyBwcm9tcHQpO1xuICAgIHRoaXMuY2xlYXIgPSBjbGVhcihwcm9tcHQsIHRoaXMub3V0LmNvbHVtbnMpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ7XG4iLCJjb25zdCBjb2xvciA9IHJlcXVpcmUoJ2tsZXVyJyk7XG5jb25zdCBQcm9tcHQgPSByZXF1aXJlKCcuL3Byb21wdCcpO1xuY29uc3QgeyBzdHlsZSwgY2xlYXIgfSA9IHJlcXVpcmUoJy4uL3V0aWwnKTtcbmNvbnN0IHsgZXJhc2UsIGN1cnNvciB9ID0gcmVxdWlyZSgnc2lzdGVyYW5zaScpO1xuXG4vKipcbiAqIENvbmZpcm1Qcm9tcHQgQmFzZSBFbGVtZW50XG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25zXG4gKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5tZXNzYWdlIE1lc3NhZ2VcbiAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMuaW5pdGlhbF0gRGVmYXVsdCB2YWx1ZSAodHJ1ZS9mYWxzZSlcbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbb3B0cy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnllc10gVGhlIFwiWWVzXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy55ZXNPcHRpb25dIFRoZSBcIlllc1wiIG9wdGlvbiB3aGVuIGNob29zaW5nIGJldHdlZW4geWVzL25vXG4gKiBAcGFyYW0ge1N0cmluZ30gW29wdHMubm9dIFRoZSBcIk5vXCIgbGFiZWxcbiAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ub09wdGlvbl0gVGhlIFwiTm9cIiBvcHRpb24gd2hlbiBjaG9vc2luZyBiZXR3ZWVuIHllcy9ub1xuICovXG5jbGFzcyBDb25maXJtUHJvbXB0IGV4dGVuZHMgUHJvbXB0IHtcbiAgY29uc3RydWN0b3Iob3B0cz17fSkge1xuICAgIHN1cGVyKG9wdHMpO1xuICAgIHRoaXMubXNnID0gb3B0cy5tZXNzYWdlO1xuICAgIHRoaXMudmFsdWUgPSBvcHRzLmluaXRpYWw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSAhIW9wdHMuaW5pdGlhbDtcbiAgICB0aGlzLnllc01zZyA9IG9wdHMueWVzIHx8ICd5ZXMnO1xuICAgIHRoaXMueWVzT3B0aW9uID0gb3B0cy55ZXNPcHRpb24gfHwgJyhZL24pJztcbiAgICB0aGlzLm5vTXNnID0gb3B0cy5ubyB8fCAnbm8nO1xuICAgIHRoaXMubm9PcHRpb24gPSBvcHRzLm5vT3B0aW9uIHx8ICcoeS9OKSc7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIHJlc2V0KCkge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLmluaXRpYWxWYWx1ZTtcbiAgICB0aGlzLmZpcmUoKTtcbiAgICB0aGlzLnJlbmRlcigpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFib3J0KCk7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmRvbmUgPSB0aGlzLmFib3J0ZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZSB8fCBmYWxzZTtcbiAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgIHRoaXMuYWJvcnRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZmlyZSgpO1xuICAgIHRoaXMucmVuZGVyKCk7XG4gICAgdGhpcy5vdXQud3JpdGUoJ1xcbicpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIF8oYywga2V5KSB7XG4gICAgaWYgKGMudG9Mb3dlckNhc2UoKSA9PT0gJ3knKSB7XG4gICAgICB0aGlzLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cbiAgICBpZiAoYy50b0xvd2VyQ2FzZSgpID09PSAnbicpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLnN1Ym1pdCgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5iZWxsKCk7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSByZXR1cm47XG4gICAgaWYgKHRoaXMuZmlyc3RSZW5kZXIpIHRoaXMub3V0LndyaXRlKGN1cnNvci5oaWRlKTtcbiAgICBlbHNlIHRoaXMub3V0LndyaXRlKGNsZWFyKHRoaXMub3V0cHV0VGV4dCwgdGhpcy5vdXQuY29sdW1ucykpO1xuICAgIHN1cGVyLnJlbmRlcigpO1xuXG4gICAgdGhpcy5vdXRwdXRUZXh0ID0gW1xuICAgICAgc3R5bGUuc3ltYm9sKHRoaXMuZG9uZSwgdGhpcy5hYm9ydGVkKSxcbiAgICAgIGNvbG9yLmJvbGQodGhpcy5tc2cpLFxuICAgICAgc3R5bGUuZGVsaW1pdGVyKHRoaXMuZG9uZSksXG4gICAgICB0aGlzLmRvbmUgPyAodGhpcy52YWx1ZSA/IHRoaXMueWVzTXNnIDogdGhpcy5ub01zZylcbiAgICAgICAgICA6IGNvbG9yLmdyYXkodGhpcy5pbml0aWFsVmFsdWUgPyB0aGlzLnllc09wdGlvbiA6IHRoaXMubm9PcHRpb24pXG4gICAgXS5qb2luKCcgJyk7XG5cbiAgICB0aGlzLm91dC53cml0ZShlcmFzZS5saW5lICsgY3Vyc29yLnRvKDApICsgdGhpcy5vdXRwdXRUZXh0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbmZpcm1Qcm9tcHQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZXh0UHJvbXB0OiByZXF1aXJlKCcuL3RleHQnKSxcbiAgU2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL3NlbGVjdCcpLFxuICBUb2dnbGVQcm9tcHQ6IHJlcXVpcmUoJy4vdG9nZ2xlJyksXG4gIERhdGVQcm9tcHQ6IHJlcXVpcmUoJy4vZGF0ZScpLFxuICBOdW1iZXJQcm9tcHQ6IHJlcXVpcmUoJy4vbnVtYmVyJyksXG4gIE11bHRpc2VsZWN0UHJvbXB0OiByZXF1aXJlKCcuL211bHRpc2VsZWN0JyksXG4gIEF1dG9jb21wbGV0ZVByb21wdDogcmVxdWlyZSgnLi9hdXRvY29tcGxldGUnKSxcbiAgQXV0b2NvbXBsZXRlTXVsdGlzZWxlY3RQcm9tcHQ6IHJlcXVpcmUoJy4vYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QnKSxcbiAgQ29uZmlybVByb21wdDogcmVxdWlyZSgnLi9jb25maXJtJylcbn07XG4iLCIndXNlIHN0cmljdCc7XG5jb25zdCAkID0gZXhwb3J0cztcbmNvbnN0IGVsID0gcmVxdWlyZSgnLi9lbGVtZW50cycpO1xuY29uc3Qgbm9vcCA9IHYgPT4gdjtcblxuZnVuY3Rpb24gdG9Qcm9tcHQodHlwZSwgYXJncywgb3B0cz17fSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3QgcCA9IG5ldyBlbFt0eXBlXShhcmdzKTtcbiAgICBjb25zdCBvbkFib3J0ID0gb3B0cy5vbkFib3J0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25TdWJtaXQgPSBvcHRzLm9uU3VibWl0IHx8IG5vb3A7XG4gICAgY29uc3Qgb25FeGl0ID0gb3B0cy5vbkV4aXQgfHwgbm9vcDtcbiAgICBwLm9uKCdzdGF0ZScsIGFyZ3Mub25TdGF0ZSB8fCBub29wKTtcbiAgICBwLm9uKCdzdWJtaXQnLCB4ID0+IHJlcyhvblN1Ym1pdCh4KSkpO1xuICAgIHAub24oJ2V4aXQnLCB4ID0+IHJlcyhvbkV4aXQoeCkpKTtcbiAgICBwLm9uKCdhYm9ydCcsIHggPT4gcmVqKG9uQWJvcnQoeCkpKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVGV4dCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLm9uU3RhdGVdIE9uIHN0YXRlIGNoYW5nZSBjYWxsYmFja1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQudGV4dCA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ1RleHRQcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBQYXNzd29yZCBwcm9tcHQgd2l0aCBtYXNrZWQgaW5wdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLnBhc3N3b3JkID0gYXJncyA9PiB7XG4gIGFyZ3Muc3R5bGUgPSAncGFzc3dvcmQnO1xuICByZXR1cm4gJC50ZXh0KGFyZ3MpO1xufTtcblxuLyoqXG4gKiBQcm9tcHQgd2hlcmUgaW5wdXQgaXMgaW52aXNpYmxlLCBsaWtlIHN1ZG9cbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmluaXRpYWxdIERlZmF1bHQgc3RyaW5nIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IFthcmdzLnZhbGlkYXRlXSBGdW5jdGlvbiB0byB2YWxpZGF0ZSB1c2VyIGlucHV0XG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLmludmlzaWJsZSA9IGFyZ3MgPT4ge1xuICBhcmdzLnN0eWxlID0gJ2ludmlzaWJsZSc7XG4gIHJldHVybiAkLnRleHQoYXJncyk7XG59O1xuXG4vKipcbiAqIE51bWJlciBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQubnVtYmVyID0gYXJncyA9PiB0b1Byb21wdCgnTnVtYmVyUHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogRGF0ZSBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuaW5pdGlhbCBEZWZhdWx0IG51bWJlciB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubWF4XSBNYXggdmFsdWVcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5taW5dIE1pbiB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnN0eWxlPVwiZGVmYXVsdFwiXSBSZW5kZXIgc3R5bGUgKCdkZWZhdWx0JywgJ3Bhc3N3b3JkJywgJ2ludmlzaWJsZScpXG4gKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLmZsb2F0PWZhbHNlXSBQYXJzZSBpbnB1dCBhcyBmbG9hdHNcbiAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy5yb3VuZD0yXSBSb3VuZCBmbG9hdHMgdG8geCBkZWNpbWFsc1xuICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmluY3JlbWVudD0xXSBOdW1iZXIgdG8gaW5jcmVtZW50IGJ5IHdoZW4gdXNpbmcgYXJyb3cta2V5c1xuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3MudmFsaWRhdGVdIEZ1bmN0aW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXRcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuZGF0ZSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0RhdGVQcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBDbGFzc2ljIHllcy9ubyBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuY29uZmlybSA9IGFyZ3MgPT4gdG9Qcm9tcHQoJ0NvbmZpcm1Qcm9tcHQnLCBhcmdzKTtcblxuLyoqXG4gKiBMaXN0IHByb21wdCwgc3BsaXQgaW50cHV0IHN0cmluZyBieSBgc2VwZXJhdG9yYFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuaW5pdGlhbF0gRGVmYXVsdCBzdHJpbmcgdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5zdHlsZT1cImRlZmF1bHRcIl0gUmVuZGVyIHN0eWxlICgnZGVmYXVsdCcsICdwYXNzd29yZCcsICdpbnZpc2libGUnKVxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLnNlcGFyYXRvcl0gU3RyaW5nIHNlcGFyYXRvclxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dCwgaW4gZm9ybSBvZiBhbiBgQXJyYXlgXG4gKi9cbiQubGlzdCA9IGFyZ3MgPT4ge1xuICBjb25zdCBzZXAgPSBhcmdzLnNlcGFyYXRvciB8fCAnLCc7XG4gIHJldHVybiB0b1Byb21wdCgnVGV4dFByb21wdCcsIGFyZ3MsIHtcbiAgICBvblN1Ym1pdDogc3RyID0+IHN0ci5zcGxpdChzZXApLm1hcChzID0+IHMudHJpbSgpKVxuICB9KTtcbn07XG5cbi8qKlxuICogVG9nZ2xlL3N3aXRjaCBwcm9tcHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLm1lc3NhZ2UgUHJvbXB0IG1lc3NhZ2UgdG8gZGlzcGxheVxuICogQHBhcmFtIHtib29sZWFufSBbYXJncy5pbml0aWFsPWZhbHNlXSBEZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3MuYWN0aXZlPVwib25cIl0gVGV4dCBmb3IgYGFjdGl2ZWAgc3RhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbYXJncy5pbmFjdGl2ZT1cIm9mZlwiXSBUZXh0IGZvciBgaW5hY3RpdmVgIHN0YXRlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQudG9nZ2xlID0gYXJncyA9PiB0b1Byb21wdCgnVG9nZ2xlUHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogSW50ZXJhY3RpdmUgc2VsZWN0IHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgY2hvaWNlcyBvYmplY3RzIGBbeyB0aXRsZSwgdmFsdWUgfSwgLi4uXWBcbiAqIEBwYXJhbSB7bnVtYmVyfSBbYXJncy5pbml0aWFsXSBJbmRleCBvZiBkZWZhdWx0IHZhbHVlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2FyZ3MuaGludF0gSGludCB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuc2VsZWN0ID0gYXJncyA9PiB0b1Byb21wdCgnU2VsZWN0UHJvbXB0JywgYXJncyk7XG5cbi8qKlxuICogSW50ZXJhY3RpdmUgbXVsdGktc2VsZWN0IC8gYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgcHJvbXB0XG4gKiBAcGFyYW0ge3N0cmluZ30gYXJncy5tZXNzYWdlIFByb21wdCBtZXNzYWdlIHRvIGRpc3BsYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFyZ3MuY2hvaWNlcyBBcnJheSBvZiBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSwgW3NlbGVjdGVkXSB9LCAuLi5dYFxuICogQHBhcmFtIHtudW1iZXJ9IFthcmdzLm1heF0gTWF4IHNlbGVjdFxuICogQHBhcmFtIHtzdHJpbmd9IFthcmdzLmhpbnRdIEhpbnQgdG8gZGlzcGxheSB1c2VyXG4gKiBAcGFyYW0ge051bWJlcn0gW2FyZ3MuY3Vyc29yPTBdIEN1cnNvciBzdGFydCBwb3NpdGlvblxuICogQHBhcmFtIHtmdW5jdGlvbn0gW2FyZ3Mub25TdGF0ZV0gT24gc3RhdGUgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3RkaW5dIFRoZSBSZWFkYWJsZSBzdHJlYW0gdG8gbGlzdGVuIHRvXG4gKiBAcGFyYW0ge1N0cmVhbX0gW2FyZ3Muc3Rkb3V0XSBUaGUgV3JpdGFibGUgc3RyZWFtIHRvIHdyaXRlIHJlYWRsaW5lIGRhdGEgdG9cbiAqIEByZXR1cm5zIHtQcm9taXNlfSBQcm9taXNlIHdpdGggdXNlciBpbnB1dFxuICovXG4kLm11bHRpc2VsZWN0ID0gYXJncyA9PiB7XG4gIGFyZ3MuY2hvaWNlcyA9IFtdLmNvbmNhdChhcmdzLmNob2ljZXMgfHwgW10pO1xuICBjb25zdCB0b1NlbGVjdGVkID0gaXRlbXMgPT4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gIHJldHVybiB0b1Byb21wdCgnTXVsdGlzZWxlY3RQcm9tcHQnLCBhcmdzLCB7XG4gICAgb25BYm9ydDogdG9TZWxlY3RlZCxcbiAgICBvblN1Ym1pdDogdG9TZWxlY3RlZFxuICB9KTtcbn07XG5cbiQuYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QgPSBhcmdzID0+IHtcbiAgYXJncy5jaG9pY2VzID0gW10uY29uY2F0KGFyZ3MuY2hvaWNlcyB8fCBbXSk7XG4gIGNvbnN0IHRvU2VsZWN0ZWQgPSBpdGVtcyA9PiBpdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLnNlbGVjdGVkKS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVNdWx0aXNlbGVjdFByb21wdCcsIGFyZ3MsIHtcbiAgICBvbkFib3J0OiB0b1NlbGVjdGVkLFxuICAgIG9uU3VibWl0OiB0b1NlbGVjdGVkXG4gIH0pO1xufTtcblxuY29uc3QgYnlUaXRsZSA9IChpbnB1dCwgY2hvaWNlcykgPT4gUHJvbWlzZS5yZXNvbHZlKFxuICBjaG9pY2VzLmZpbHRlcihpdGVtID0+IGl0ZW0udGl0bGUuc2xpY2UoMCwgaW5wdXQubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBpbnB1dC50b0xvd2VyQ2FzZSgpKVxuKTtcblxuLyoqXG4gKiBJbnRlcmFjdGl2ZSBhdXRvLWNvbXBsZXRlIHByb21wdFxuICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubWVzc2FnZSBQcm9tcHQgbWVzc2FnZSB0byBkaXNwbGF5XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzLmNob2ljZXMgQXJyYXkgb2YgYXV0by1jb21wbGV0ZSBjaG9pY2VzIG9iamVjdHMgYFt7IHRpdGxlLCB2YWx1ZSB9LCAuLi5dYFxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2FyZ3Muc3VnZ2VzdF0gRnVuY3Rpb24gdG8gZmlsdGVyIHJlc3VsdHMgYmFzZWQgb24gdXNlciBpbnB1dC4gRGVmYXVsdHMgdG8gc29ydCBieSBgdGl0bGVgXG4gKiBAcGFyYW0ge251bWJlcn0gW2FyZ3MubGltaXQ9MTBdIE1heCBudW1iZXIgb2YgcmVzdWx0cyB0byBzaG93XG4gKiBAcGFyYW0ge3N0cmluZ30gW2FyZ3Muc3R5bGU9XCJkZWZhdWx0XCJdIFJlbmRlciBzdHlsZSAoJ2RlZmF1bHQnLCAncGFzc3dvcmQnLCAnaW52aXNpYmxlJylcbiAqIEBwYXJhbSB7U3RyaW5nfSBbYXJncy5pbml0aWFsXSBJbmRleCBvZiB0aGUgZGVmYXVsdCB2YWx1ZVxuICogQHBhcmFtIHtib29sZWFufSBbb3B0cy5jbGVhckZpcnN0XSBUaGUgZmlyc3QgRVNDQVBFIGtleXByZXNzIHdpbGwgY2xlYXIgdGhlIGlucHV0XG4gKiBAcGFyYW0ge1N0cmluZ30gW2FyZ3MuZmFsbGJhY2tdIEZhbGxiYWNrIG1lc3NhZ2UgLSBkZWZhdWx0cyB0byBpbml0aWFsIHZhbHVlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBbYXJncy5vblN0YXRlXSBPbiBzdGF0ZSBjaGFuZ2UgY2FsbGJhY2tcbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRpbl0gVGhlIFJlYWRhYmxlIHN0cmVhbSB0byBsaXN0ZW4gdG9cbiAqIEBwYXJhbSB7U3RyZWFtfSBbYXJncy5zdGRvdXRdIFRoZSBXcml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgcmVhZGxpbmUgZGF0YSB0b1xuICogQHJldHVybnMge1Byb21pc2V9IFByb21pc2Ugd2l0aCB1c2VyIGlucHV0XG4gKi9cbiQuYXV0b2NvbXBsZXRlID0gYXJncyA9PiB7XG4gIGFyZ3Muc3VnZ2VzdCA9IGFyZ3Muc3VnZ2VzdCB8fCBieVRpdGxlO1xuICBhcmdzLmNob2ljZXMgPSBbXS5jb25jYXQoYXJncy5jaG9pY2VzIHx8IFtdKTtcbiAgcmV0dXJuIHRvUHJvbXB0KCdBdXRvY29tcGxldGVQcm9tcHQnLCBhcmdzKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IHByb21wdHMgPSByZXF1aXJlKCcuL3Byb21wdHMnKTtcblxuY29uc3QgcGFzc09uID0gWydzdWdnZXN0JywgJ2Zvcm1hdCcsICdvblN0YXRlJywgJ3ZhbGlkYXRlJywgJ29uUmVuZGVyJywgJ3R5cGUnXTtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTtcblxuLyoqXG4gKiBQcm9tcHQgZm9yIGEgc2VyaWVzIG9mIHF1ZXN0aW9uc1xuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IHF1ZXN0aW9ucyBTaW5nbGUgcXVlc3Rpb24gb2JqZWN0IG9yIEFycmF5IG9mIHF1ZXN0aW9uIG9iamVjdHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvblN1Ym1pdF0gQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIG9uIHByb21wdCBzdWJtaXRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtvbkNhbmNlbF0gQ2FsbGJhY2sgZnVuY3Rpb24gY2FsbGVkIG9uIGNhbmNlbC9hYm9ydFxuICogQHJldHVybnMge09iamVjdH0gT2JqZWN0IHdpdGggdmFsdWVzIGZyb20gdXNlciBpbnB1dFxuICovXG5hc3luYyBmdW5jdGlvbiBwcm9tcHQocXVlc3Rpb25zPVtdLCB7IG9uU3VibWl0PW5vb3AsIG9uQ2FuY2VsPW5vb3AgfT17fSkge1xuICBjb25zdCBhbnN3ZXJzID0ge307XG4gIGNvbnN0IG92ZXJyaWRlID0gcHJvbXB0Ll9vdmVycmlkZSB8fCB7fTtcbiAgcXVlc3Rpb25zID0gW10uY29uY2F0KHF1ZXN0aW9ucyk7XG4gIGxldCBhbnN3ZXIsIHF1ZXN0aW9uLCBxdWl0LCBuYW1lLCB0eXBlLCBsYXN0UHJvbXB0O1xuXG4gIGNvbnN0IGdldEZvcm1hdHRlZEFuc3dlciA9IGFzeW5jIChxdWVzdGlvbiwgYW5zd2VyLCBza2lwVmFsaWRhdGlvbiA9IGZhbHNlKSA9PiB7XG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbiAmJiBxdWVzdGlvbi52YWxpZGF0ZSAmJiBxdWVzdGlvbi52YWxpZGF0ZShhbnN3ZXIpICE9PSB0cnVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbi5mb3JtYXQgPyBhd2FpdCBxdWVzdGlvbi5mb3JtYXQoYW5zd2VyLCBhbnN3ZXJzKSA6IGFuc3dlclxuICB9O1xuXG4gIGZvciAocXVlc3Rpb24gb2YgcXVlc3Rpb25zKSB7XG4gICAgKHsgbmFtZSwgdHlwZSB9ID0gcXVlc3Rpb24pO1xuXG4gICAgLy8gZXZhbHVhdGUgdHlwZSBmaXJzdCBhbmQgc2tpcCBpZiB0eXBlIGlzIGEgZmFsc3kgdmFsdWVcbiAgICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHR5cGUgPSBhd2FpdCB0eXBlKGFuc3dlciwgeyAuLi5hbnN3ZXJzIH0sIHF1ZXN0aW9uKVxuICAgICAgcXVlc3Rpb25bJ3R5cGUnXSA9IHR5cGVcbiAgICB9XG4gICAgaWYgKCF0eXBlKSBjb250aW51ZTtcblxuICAgIC8vIGlmIHByb3BlcnR5IGlzIGEgZnVuY3Rpb24sIGludm9rZSBpdCB1bmxlc3MgaXQncyBhIHNwZWNpYWwgZnVuY3Rpb25cbiAgICBmb3IgKGxldCBrZXkgaW4gcXVlc3Rpb24pIHtcbiAgICAgIGlmIChwYXNzT24uaW5jbHVkZXMoa2V5KSkgY29udGludWU7XG4gICAgICBsZXQgdmFsdWUgPSBxdWVzdGlvbltrZXldO1xuICAgICAgcXVlc3Rpb25ba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IGF3YWl0IHZhbHVlKGFuc3dlciwgeyAuLi5hbnN3ZXJzIH0sIGxhc3RQcm9tcHQpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgbGFzdFByb21wdCA9IHF1ZXN0aW9uO1xuXG4gICAgaWYgKHR5cGVvZiBxdWVzdGlvbi5tZXNzYWdlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwcm9tcHQgbWVzc2FnZSBpcyByZXF1aXJlZCcpO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB2YXJzIGluIGNhc2UgdGhleSBjaGFuZ2VkXG4gICAgKHsgbmFtZSwgdHlwZSB9ID0gcXVlc3Rpb24pO1xuXG4gICAgaWYgKHByb21wdHNbdHlwZV0gPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBwcm9tcHQgdHlwZSAoJHt0eXBlfSkgaXMgbm90IGRlZmluZWRgKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcnJpZGVbcXVlc3Rpb24ubmFtZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYW5zd2VyID0gYXdhaXQgZ2V0Rm9ybWF0dGVkQW5zd2VyKHF1ZXN0aW9uLCBvdmVycmlkZVtxdWVzdGlvbi5uYW1lXSk7XG4gICAgICBpZiAoYW5zd2VyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIC8vIEdldCB0aGUgaW5qZWN0ZWQgYW5zd2VyIGlmIHRoZXJlIGlzIG9uZSBvciBwcm9tcHQgdGhlIHVzZXJcbiAgICAgIGFuc3dlciA9IHByb21wdC5faW5qZWN0ZWQgPyBnZXRJbmplY3RlZEFuc3dlcihwcm9tcHQuX2luamVjdGVkLCBxdWVzdGlvbi5pbml0aWFsKSA6IGF3YWl0IHByb21wdHNbdHlwZV0ocXVlc3Rpb24pO1xuICAgICAgYW5zd2Vyc1tuYW1lXSA9IGFuc3dlciA9IGF3YWl0IGdldEZvcm1hdHRlZEFuc3dlcihxdWVzdGlvbiwgYW5zd2VyLCB0cnVlKTtcbiAgICAgIHF1aXQgPSBhd2FpdCBvblN1Ym1pdChxdWVzdGlvbiwgYW5zd2VyLCBhbnN3ZXJzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHF1aXQgPSAhKGF3YWl0IG9uQ2FuY2VsKHF1ZXN0aW9uLCBhbnN3ZXJzKSk7XG4gICAgfVxuXG4gICAgaWYgKHF1aXQpIHJldHVybiBhbnN3ZXJzO1xuICB9XG5cbiAgcmV0dXJuIGFuc3dlcnM7XG59XG5cbmZ1bmN0aW9uIGdldEluamVjdGVkQW5zd2VyKGluamVjdGVkLCBkZWFmdWx0VmFsdWUpIHtcbiAgY29uc3QgYW5zd2VyID0gaW5qZWN0ZWQuc2hpZnQoKTtcbiAgICBpZiAoYW5zd2VyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IGFuc3dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gKGFuc3dlciA9PT0gdW5kZWZpbmVkKSA/IGRlYWZ1bHRWYWx1ZSA6IGFuc3dlcjtcbn1cblxuZnVuY3Rpb24gaW5qZWN0KGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9pbmplY3RlZCA9IChwcm9tcHQuX2luamVjdGVkIHx8IFtdKS5jb25jYXQoYW5zd2Vycyk7XG59XG5cbmZ1bmN0aW9uIG92ZXJyaWRlKGFuc3dlcnMpIHtcbiAgcHJvbXB0Ll9vdmVycmlkZSA9IE9iamVjdC5hc3NpZ24oe30sIGFuc3dlcnMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24ocHJvbXB0LCB7IHByb21wdCwgcHJvbXB0cywgaW5qZWN0LCBvdmVycmlkZSB9KTtcbiIsImZ1bmN0aW9uIGlzTm9kZUxUKHRhcikge1xuICB0YXIgPSAoQXJyYXkuaXNBcnJheSh0YXIpID8gdGFyIDogdGFyLnNwbGl0KCcuJykpLm1hcChOdW1iZXIpO1xuICBsZXQgaT0wLCBzcmM9cHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gIGZvciAoOyBpIDwgdGFyLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHNyY1tpXSA+IHRhcltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0YXJbaV0gPiBzcmNbaV0pIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPVxuICBpc05vZGVMVCgnOC42LjAnKVxuICAgID8gcmVxdWlyZSgnLi9kaXN0L2luZGV4LmpzJylcbiAgICA6IHJlcXVpcmUoJy4vbGliL2luZGV4LmpzJyk7XG4iXSwibmFtZXMiOlsiYWN0aW9uIiwic3RyaXAiLCJiZWVwIiwiY3Vyc29yIiwiZXJhc2UiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwicmVxdWlyZSQkMCIsIl9yZXF1aXJlIiwicmVxdWlyZSQkMSIsIndpZHRoIiwiY2xlYXIiLCJtYWluIiwid2luIiwiZmlndXJlcyIsImZpZ3VyZXNfMSIsImMiLCJzdHlsZXMiLCJyZW5kZXIiLCJzeW1ib2xzIiwic3ltYm9sIiwiZGVsaW1pdGVyIiwiaXRlbSIsInN0eWxlIiwibGluZXMiLCJ3cmFwIiwiZW50cmllc1RvRGlzcGxheSIsInV0aWwiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJyZXF1aXJlJCQ1IiwicmVxdWlyZSQkNiIsInJlcXVpcmUkJDciLCJyZWFkbGluZSIsIkV2ZW50RW1pdHRlciIsIl9yZXF1aXJlMiIsImNvbG9yIiwiUHJvbXB0IiwicHJvbXB0IiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJUZXh0UHJvbXB0IiwidGV4dCIsIlNlbGVjdFByb21wdCIsInNlbGVjdCIsIlRvZ2dsZVByb21wdCIsInRvZ2dsZSIsIkRhdGVQYXJ0IiwiZGF0ZXBhcnQiLCJNZXJpZGllbSIsIm1lcmlkaWVtIiwicG9zIiwiRGF5IiwiZGF5IiwiSG91cnMiLCJob3VycyIsIk1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsIk1pbnV0ZXMiLCJtaW51dGVzIiwiTW9udGgiLCJtb250aCIsIlNlY29uZHMiLCJzZWNvbmRzIiwiWWVhciIsInllYXIiLCJkYXRlcGFydHMiLCJyZXF1aXJlJCQ4IiwicmVnZXgiLCJyZWdleEdyb3VwcyIsImRmbHRMb2NhbGVzIiwiRGF0ZVByb21wdCIsImRhdGUiLCJpc051bWJlciIsImlzRGVmIiwicm91bmQiLCJOdW1iZXJQcm9tcHQiLCJudW1iZXIiLCJNdWx0aXNlbGVjdFByb21wdCIsIm11bHRpc2VsZWN0IiwiZ2V0VmFsIiwiZ2V0VGl0bGUiLCJnZXRJbmRleCIsIkF1dG9jb21wbGV0ZVByb21wdCIsImF1dG9jb21wbGV0ZSIsIkF1dG9jb21wbGV0ZU11bHRpc2VsZWN0UHJvbXB0IiwiYXV0b2NvbXBsZXRlTXVsdGlzZWxlY3QiLCJDb25maXJtUHJvbXB0IiwiY29uZmlybSIsImVsZW1lbnRzIiwicHJvbXB0cyIsInBhc3NPbiIsIm5vb3AiLCJnZXRJbmplY3RlZEFuc3dlciIsImluamVjdCIsIm92ZXJyaWRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLE1BQU0sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUMvRDtBQUNBLE1BQU0sQ0FBQyxHQUFHO0FBQ1YsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLFdBQVcsS0FBSyxHQUFHO0FBQ3hFO0FBQ0E7QUFDQSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNyQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQjtBQUNBO0FBQ0EsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDckIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkI7QUFDQTtBQUNBLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3ZCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3hCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRTtBQUN2QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQzlCLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3QixFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDZixFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDO0FBQ2xCLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDbkIsRUFBRSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQy9CLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwRCxHQUFHO0FBQ0gsRUFBRTtBQUNGLENBQUMsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUN4QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzFCLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDekI7QUFDQSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9DO0FBQ0EsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM3QixDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25DLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFD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QUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzNDLEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1QyxFQUFFLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ2xELEVBQUUsUUFBUSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDbEQsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUM7QUFDcEIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsRUFBQztBQUNEO0FBQ0EsTUFBTSxNQUFNLEdBQUc7QUFDZixFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzVDLEVBQUUsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDOUMsRUFBQztBQUNEO0FBQ0EsTUFBTUMsT0FBSyxHQUFHO0FBQ2QsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDcEIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUM3QyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQzlDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ2xCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRTtBQUNmLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFDbEMsTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsR0FBR0QsUUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzlELElBQUksSUFBSSxLQUFLO0FBQ2IsTUFBTSxLQUFLLElBQUlBLFFBQU0sQ0FBQyxJQUFJLENBQUM7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQztBQUNqQixHQUFHO0FBQ0gsRUFBQztBQUNEO0lBQ0EsR0FBYyxHQUFHLFVBQUVBLFFBQU0sRUFBRSxNQUFNLFNBQUVDLE9BQUssUUFBRUYsTUFBSSxFQUFFOztBQ3ZEaEQsU0FBU0csNEJBQTBCLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHQyw2QkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsdUlBQXVJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDdCtCO0FBQ0EsU0FBU0EsNkJBQTJCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLE9BQU9DLG1CQUFpQixDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxXQUFXLElBQUksMENBQTBDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9B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LEVBQUUsQ0FBQztBQUM5QyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDdkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQ2hCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU87QUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUM7QUFDM0IsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNaLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFN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QztBQUN2QixNQUFNLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQzNCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xCLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsTUFBTSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDbkIsS0FBSyxNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMzQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDakQsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEMsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLFNBQVMsR0FBRztBQUNsQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckMsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUc7QUFDWCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPO0FBQzVCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDVCxRQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ1MsT0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3BILElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLGlCQUFpQixHQUFHZSxrQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUM7QUFDbkcsUUFBUSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsVUFBVTtBQUNqRCxRQUFRLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUM7QUFDOUM7QUFDQTtBQUNBLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDSCxPQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFYyxPQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRWQsT0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHYyxPQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBR0EsT0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcE87QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUM7QUFDOUI7QUFDQSxNQUFNLEtBQUssSUFBSSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEQsUUFBUSxJQUFJLEtBQUs7QUFDakIsWUFBWSxNQUFNO0FBQ2xCLFlBQVksSUFBSSxHQUFHLEVBQUU7QUFDckIsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQztBQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssVUFBVSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUU7QUFDaEQsVUFBVSxNQUFNLEdBQUd2QixTQUFPLENBQUMsT0FBTyxDQUFDO0FBQ25DLFNBQVMsTUFBTSxJQUFJLENBQUMsS0FBSyxRQUFRLEdBQUcsQ0FBQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUN6RSxVQUFVLE1BQU0sR0FBR0EsU0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNyQyxTQUFTLE1BQU07QUFDZixVQUFVLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDdkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7QUFDeEIsVUFBVSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUd1QixPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBR0EsT0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUcsVUFBVSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBR0EsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQ3ZCLFNBQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUNsRyxTQUFTLE1BQU07QUFDZixVQUFVLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBR3VCLE9BQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEYsVUFBVSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsR0FBR0EsT0FBSyxDQUFDLElBQUksQ0FBQ3ZCLFNBQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLE1BQU0sQ0FBQztBQUMzRjtBQUNBLFVBQVUsSUFBSSxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ2xELFlBQVksSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsWUFBWSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDM0gsY0FBYyxJQUFJLEdBQUcsSUFBSSxHQUFHVyxNQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtBQUNoRCxnQkFBZ0IsTUFBTSxFQUFFLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU87QUFDdkMsZUFBZSxDQUFDLENBQUM7QUFDakIsYUFBYTtBQUNiLFdBQVc7QUFDWCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUVZLE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckUsT0FBTztBQUNQLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3BDLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtJQUNBUSxRQUFjLEdBQUdELGNBQVk7O0FDM0w3QixNQUFNUCxPQUFLLEdBQUc5QixLQUFnQixDQUFDO0FBQy9CO0FBQ0EsTUFBTStCLFFBQU0sR0FBRzdCLFFBQW1CLENBQUM7QUFDbkM7QUFDQSxNQUFNRCxVQUFRLEdBQUdvQixNQUFrQjtBQUNuQyxNQUFNTCxPQUFLLEdBQUdmLFVBQVEsQ0FBQyxLQUFLO0FBQzVCLE1BQU1HLE9BQUssR0FBR0gsVUFBUSxDQUFDLEtBQUssQ0FBQztBQUM3QjtBQUNBLE1BQU00QixXQUFTLEdBQUdQLEdBQXFCO0FBQ3ZDLE1BQU0zQixRQUFNLEdBQUdrQyxXQUFTLENBQUMsTUFBTTtBQUMvQixNQUFNakMsT0FBSyxHQUFHaUMsV0FBUyxDQUFDLEtBQUssQ0FBQztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNVSxjQUFZLFNBQVNSLFFBQU0sQ0FBQztBQUNsQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFO0FBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUNoQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDdEMsSUFBSSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0FBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHO0FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxVQUFVLEdBQUc7QUFDZixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUN0QixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDdEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNwQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNaLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ25CLE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDL0IsS0FBSyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUMxQixNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3hCLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDMUIsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN6QixLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU87QUFDNUIsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUNwQyxRQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ1MsT0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3BILElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDWSxPQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFYyxPQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRWQsT0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHYyxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRUEsT0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHQSxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQy9RLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUNsQyxPQUFLLENBQUMsSUFBSSxHQUFHRCxRQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNoRSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7SUFDQTZDLFFBQWMsR0FBR0QsY0FBWTs7QUN6SDdCLE1BQU1FLFVBQVEsQ0FBQztBQUNmLEVBQUUsV0FBVyxDQUFDO0FBQ2QsSUFBSSxLQUFLO0FBQ1QsSUFBSSxJQUFJO0FBQ1IsSUFBSSxLQUFLO0FBQ1QsSUFBSSxPQUFPO0FBQ1gsR0FBRyxFQUFFO0FBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQ2pDLEdBQUc7QUFDSDtBQUNBLEVBQUUsRUFBRSxHQUFHLEVBQUU7QUFDVDtBQUNBLEVBQUUsSUFBSSxHQUFHLEVBQUU7QUFDWDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLEdBQUcsR0FBRyxVQUFVLElBQUksSUFBSSxZQUFZQSxVQUFRLENBQUMsQ0FBQztBQUN4RixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRTtBQUNmO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2hELElBQUksTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssR0FBRyxHQUFHLFVBQVUsSUFBSSxJQUFJLFlBQVlBLFVBQVEsQ0FBQyxDQUFDO0FBQ25GLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0lBQ0FDLFVBQWMsR0FBR0QsVUFBUTs7QUNwQ3pCLE1BQU1BLFVBQVEsR0FBR3pDLFVBQXFCLENBQUM7QUFDdkM7QUFDQSxNQUFNMkMsVUFBUSxTQUFTRixVQUFRLENBQUM7QUFDaEMsRUFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN6RCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2QsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLEdBQUc7QUFDYixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFDM0QsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUM7QUFDckUsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0lBQ0FHLFVBQWMsR0FBR0QsVUFBUTs7QUN0QnpCLE1BQU1GLFVBQVEsR0FBR3pDLFVBQXFCLENBQUM7QUFDdkM7QUFDQSxNQUFNNkMsS0FBRyxHQUFHLENBQUMsSUFBSTtBQUNqQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2IsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqRSxDQUFDLENBQUM7QUFDRjtBQUNBLE1BQU1DLEtBQUcsU0FBU0wsVUFBUSxDQUFDO0FBQzNCLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNuQyxJQUFJLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakMsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxHQUFHLElBQUksR0FBR0ksS0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzVQLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtJQUNBRSxLQUFjLEdBQUdELEtBQUc7O0FDaENwQixNQUFNTCxVQUFRLEdBQUd6QyxVQUFxQixDQUFDO0FBQ3ZDO0FBQ0EsTUFBTWdELE9BQUssU0FBU1AsVUFBUSxDQUFDO0FBQzdCLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNyQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3ZELElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFFLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtJQUNBUSxPQUFjLEdBQUdELE9BQUs7O0FDM0J0QixNQUFNUCxVQUFRLEdBQUd6QyxVQUFxQixDQUFDO0FBQ3ZDO0FBQ0EsTUFBTWtELGNBQVksU0FBU1QsVUFBUSxDQUFDO0FBQ3BDLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0QsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDN0YsR0FBRztBQUNIO0FBQ0EsQ0FBQztBQUNEO0lBQ0FVLGNBQWMsR0FBR0QsY0FBWTs7QUN6QjdCLE1BQU1ULFVBQVEsR0FBR3pDLFVBQXFCLENBQUM7QUFDdkM7QUFDQSxNQUFNb0QsU0FBTyxTQUFTWCxVQUFRLENBQUM7QUFDL0IsRUFBRSxXQUFXLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRTtBQUN6QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssQ0FBQyxHQUFHLEVBQUU7QUFDYixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ25DLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xFLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtJQUNBWSxTQUFjLEdBQUdELFNBQU87O0FDMUJ4QixNQUFNWCxVQUFRLEdBQUd6QyxVQUFxQixDQUFDO0FBQ3ZDO0FBQ0EsTUFBTXNELE9BQUssU0FBU2IsVUFBUSxDQUFDO0FBQzdCLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3JDLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDL0IsSUFBSSxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xLLEdBQUc7QUFDSDtBQUNBLENBQUM7QUFDRDtJQUNBYyxPQUFjLEdBQUdELE9BQUs7O0FDNUJ0QixNQUFNYixVQUFRLEdBQUd6QyxVQUFxQixDQUFDO0FBQ3ZDO0FBQ0EsTUFBTXdELFNBQU8sU0FBU2YsVUFBUSxDQUFDO0FBQy9CLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckQsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNuQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsRSxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7SUFDQWdCLFNBQWMsR0FBR0QsU0FBTzs7QUMxQnhCLE1BQU1mLFVBQVEsR0FBR3pDLFVBQXFCLENBQUM7QUFDdkM7QUFDQSxNQUFNMEQsTUFBSSxTQUFTakIsVUFBUSxDQUFDO0FBQzVCLEVBQUUsV0FBVyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUU7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkQsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsR0FBRyxFQUFFO0FBQ2IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxHQUFHO0FBQ0g7QUFDQSxFQUFFLFFBQVEsR0FBRztBQUNiLElBQUksSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUM1RCxHQUFHO0FBQ0g7QUFDQSxDQUFDO0FBQ0Q7SUFDQWtCLE1BQWMsR0FBR0QsTUFBSTs7SUMxQnJCRSxXQUFjLEdBQUc7QUFDakIsRUFBRSxRQUFRLEVBQUU1RCxVQUFxQjtBQUNqQyxFQUFFLFFBQVEsRUFBRUUsVUFBcUI7QUFDakMsRUFBRSxHQUFHLEVBQUVtQixLQUFnQjtBQUN2QixFQUFFLEtBQUssRUFBRUMsT0FBa0I7QUFDM0IsRUFBRSxZQUFZLEVBQUVDLGNBQXlCO0FBQ3pDLEVBQUUsT0FBTyxFQUFFQyxTQUFvQjtBQUMvQixFQUFFLEtBQUssRUFBRUMsT0FBa0I7QUFDM0IsRUFBRSxPQUFPLEVBQUVDLFNBQW9CO0FBQy9CLEVBQUUsSUFBSSxFQUFFbUMsTUFBaUI7QUFDekIsQ0FBQzs7QUNWRCxTQUFTNUIsb0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDelE7QUFDQSxTQUFTQyxtQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLFlBQVksRUFBRSxJQUFJLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRUQsb0JBQWtCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFQSxvQkFBa0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3JZO0FBQ0EsTUFBTUgsT0FBSyxHQUFHOUIsS0FBZ0IsQ0FBQztBQUMvQjtBQUNBLE1BQU0rQixRQUFNLEdBQUc3QixRQUFtQixDQUFDO0FBQ25DO0FBQ0EsTUFBTUQsVUFBUSxHQUFHb0IsTUFBa0I7QUFDbkMsTUFBTUwsT0FBSyxHQUFHZixVQUFRLENBQUMsS0FBSztBQUM1QixNQUFNRyxPQUFLLEdBQUdILFVBQVEsQ0FBQyxLQUFLO0FBQzVCLE1BQU1NLFNBQU8sR0FBR04sVUFBUSxDQUFDLE9BQU8sQ0FBQztBQUNqQztBQUNBLE1BQU00QixXQUFTLEdBQUdQLEdBQXFCO0FBQ3ZDLE1BQU0xQixPQUFLLEdBQUdpQyxXQUFTLENBQUMsS0FBSztBQUM3QixNQUFNbEMsUUFBTSxHQUFHa0MsV0FBUyxDQUFDLE1BQU0sQ0FBQztBQUNoQztBQUNBLE1BQU0sU0FBUyxHQUFHTixXQUF1QjtBQUN6QyxNQUFNa0IsVUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRO0FBQ25DLE1BQU1FLFVBQVEsR0FBRyxTQUFTLENBQUMsUUFBUTtBQUNuQyxNQUFNRyxLQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUc7QUFDekIsTUFBTUUsT0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLO0FBQzdCLE1BQU1FLGNBQVksR0FBRyxTQUFTLENBQUMsWUFBWTtBQUMzQyxNQUFNRSxTQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU87QUFDakMsTUFBTUUsT0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLO0FBQzdCLE1BQU1FLFNBQU8sR0FBRyxTQUFTLENBQUMsT0FBTztBQUNqQyxNQUFNRSxNQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQztBQUM1QjtBQUNBLE1BQU1JLE9BQUssR0FBRyxxSEFBcUgsQ0FBQztBQUNwSSxNQUFNQyxhQUFXLEdBQUc7QUFDcEIsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUNOLElBQUksS0FBSztBQUNULEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUM7QUFDckMsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUlqQixLQUFHLENBQUMsSUFBSSxDQUFDO0FBQzFCO0FBQ0EsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUlRLE9BQUssQ0FBQyxJQUFJLENBQUM7QUFDNUI7QUFDQSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSUksTUFBSSxDQUFDLElBQUksQ0FBQztBQUMzQjtBQUNBLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJZixVQUFRLENBQUMsSUFBSSxDQUFDO0FBQy9CO0FBQ0EsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUlLLE9BQUssQ0FBQyxJQUFJLENBQUM7QUFDNUI7QUFDQSxFQUFFLENBQUMsRUFBRSxJQUFJLElBQUksSUFBSUksU0FBTyxDQUFDLElBQUksQ0FBQztBQUM5QjtBQUNBLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxJQUFJSSxTQUFPLENBQUMsSUFBSSxDQUFDO0FBQzlCO0FBQ0EsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUlOLGNBQVksQ0FBQyxJQUFJLENBQUM7QUFDbkM7QUFDQSxDQUFDLENBQUM7QUFDRixNQUFNYyxhQUFXLEdBQUc7QUFDcEIsRUFBRSxNQUFNLEVBQUUsdUZBQXVGLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUM1RyxFQUFFLFdBQVcsRUFBRSxpREFBaUQsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQzNFLEVBQUUsUUFBUSxFQUFFLDBEQUEwRCxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7QUFDakYsRUFBRSxhQUFhLEVBQUUsNkJBQTZCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1DLFlBQVUsU0FBU2xDLFFBQU0sQ0FBQztBQUNoQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFO0FBQ3pCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzVCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQ2lDLGFBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSw0QkFBNEIsQ0FBQztBQUMvRDtBQUNBLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUM7QUFDbkQ7QUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxxQkFBcUIsQ0FBQztBQUNuRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUc1RCxPQUFLLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssR0FBRztBQUNkLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3JCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUc7QUFDYixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN0QixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUNqQixJQUFJLElBQUksSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2pCLElBQUksSUFBSSxNQUFNLENBQUM7QUFDZixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3BCO0FBQ0EsSUFBSSxPQUFPLE1BQU0sR0FBRzBELE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdEMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakMsTUFBTSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUM7QUFDbkQsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUlDLGFBQVcsR0FBR0EsYUFBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzVELFFBQVEsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLO0FBQ25DLFFBQVEsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ3ZCLFFBQVEsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ3pCLFFBQVEsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQzdCLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztBQUNqQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSztBQUM5QyxNQUFNLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEgsTUFBTSxPQUFPLEdBQUcsQ0FBQztBQUNqQixLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDWCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUU7QUFDaEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHO0FBQ1YsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVl0QixVQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDakIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDcEMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckI7QUFDQSxJQUFJLE9BQU9QLG1CQUFpQixDQUFDLGFBQWE7QUFDMUMsTUFBTSxJQUFJLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUNyQyxRQUFRLEtBQUssQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQy9CLFFBQVEsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixPQUFPO0FBQ1A7QUFDQSxNQUFNLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDM0IsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUNULEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxHQUFHO0FBQ1gsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDdEI7QUFDQSxJQUFJLE9BQU9BLG1CQUFpQixDQUFDLGFBQWE7QUFDMUMsTUFBTSxNQUFNLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUM5QjtBQUNBLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDN0I7QUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QjtBQUNBLFFBQVEsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3hCO0FBQ0EsUUFBUSxPQUFPO0FBQ2YsT0FBTztBQUNQO0FBQ0EsTUFBTSxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixNQUFNLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQzdCO0FBQ0EsTUFBTSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEI7QUFDQSxNQUFNLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUN0QjtBQUNBLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7QUFDQSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNyQixLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ1QsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDakMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlDLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHO0FBQ1YsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksSUFBSSxZQUFZTyxVQUFRLENBQUMsQ0FBQyxDQUFDO0FBQzlHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNQLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3RCLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7QUFDdEIsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU87QUFDNUIsSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM5QyxRQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ1MsT0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3BILElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0EsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUNZLE9BQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUVjLE9BQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFZCxPQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUdjLE9BQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pRO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsTUFBTSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBR3ZCLFNBQU8sQ0FBQyxZQUFZLENBQUMsQ0FB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QU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUQ7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ3BELE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDOUIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtBQUNaLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDM0MsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsSUFBSSxJQUFJ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QUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDeEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztBQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMzQixNQUFNLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQy9DLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdEIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7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QixJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdFLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDL0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxFQUFFLEdBQUc7QUFDUCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDM0IsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25ELEtBQUssTUFBTTtBQUNYLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3JELE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNyRCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsS0FBSyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QztBQUNBLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsUUFBUSxHQUFHO0FBQ2IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckYsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLEdBQUc7QUFDYixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLEdBQUc7QUFDVixJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzdFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLFlBQVksQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDM0MsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNiLElBQUksSUFBSSxNQUFNLEdBQUcsT0FBTyxHQUFHbkUsU0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLEdBQUdBLFNBQU8sQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO0FBQzdFLElBQUksSUFBSSxLQUFLLEdBQUcsT0FBTyxHQUFHdUIsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFD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QUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUs7QUFDbkMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO0FBQ3pDLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7QUFDM0MsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztBQUN2QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUM7QUFDeEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsR0FBRyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsQ0FBQyxRQUFRLEdB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QUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztBQUMvQyxFQUFFLE9BQU8sUUFBUSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDLENBQUM7OztBQzNORCxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLEVBQUUsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLEVBQUUsRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRTtBQUN6VjtBQUNBLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLEVBQUU7QUFDdGhCO0FBQ0EsU0FBUyxlQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFO0FBQ2pOO0FBQ0EsU0FBUywwQkFBMEIsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsMkJBQTJCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxjQUFjLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLHVJQUF1SSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3QrQjtBQUNBLFNBQVMsMkJBQTJCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLE9BQU8saUJBQWlCLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLFdBQVcsSUFBSSwwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNoYTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUFFO0FBQ25MO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN6UTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxZQUFZLEVBQUUsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMs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SSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxRQUFRLEdBQUc7QUFDYixJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BCLEdBQUc7QUFDSCxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3BCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0FBQ1osSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUU7QUFDbkIsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUMvQixLQUFLLE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFF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SSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN0QixNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoRCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLEdBQUc7QUFDWCxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPO0FBQzVCLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDVCxRQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEQsU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ1MsT0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0FBQ0E7QUFDQSxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUc7QUFDdEIsTUFBTVksT0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDM0MsTUFBTWMsT0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzFCLE1BQU1kLE9BQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0FBQzVCLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBR2MsT0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdEksV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ25CLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEI7QUFDQTtBQUNBLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNO0FBQ3pELFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUd2QixTQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRXVCLE9BQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0YsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQ2xDLE9BQUssQ0FBQyxJQUFJLEdBQUdELFFBQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFLEdBQUc7QUFDSCxDQUFDO0FBQ0Q7SUFDQSxJQUFjLEdBQUcsVUFBVTs7QUNoTjNCLE1BQU1tQyxPQUFLLEdBQUc5QixLQUFnQixDQUFDO0FBQy9CLE1BQU0rQixRQUFNLEdBQUc3QixRQUFtQixDQUFDO0FBQ25DLE1BQU0sVUFBRVAsUUFBTSxTQUFFQyxPQUFLLEVBQUUsR0FBR3lCLEdBQXFCLENBQUM7QUFDaEQsTUFBTSxTQUFFTCxPQUFLLFdBQUVULFNBQU8sU0FBRUgsT0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHa0IsSUFBa0IsQ0FBQztBQUM1RDtBQUNBLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUN6QixNQUFNLEtBQUssR0FBRyxHQUFHLElBQUksR0FBRyxLQUFLLFNBQVMsQ0FBQztBQUN2QyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEtBQUs7QUFDckMsRUFBRSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN2QyxFQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzlDLEVBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSxZQUFZLFNBQVNTLFFBQU0sQ0FBQztBQUNsQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3ZCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBR2YsT0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDNUIsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDM0QsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUM7QUFDbkMsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUNyRCxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFDL0QsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNuRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDZixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUN2QixNQUFNLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQzlCLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBR2MsT0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2QixLQUFLLE1BQU07QUFDWCxNQUFNLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQy9CLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkUsTUFBTSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksS0FBSyxHQUFHO0FBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDdkIsR0FBRztBQUNIO0FBQ0EsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQ1gsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRCxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDWCxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRSxHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLEdBQUc7QUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEtBQUssR0FBRztBQUNWLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztBQUNwQyxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2hCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ2pCLEdBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxRQUFRLEdBQUc7QUFDbkIsSUFBSSxJQUFJLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ25DLE1BQU0sSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDNUIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7QUFDeEIsR0FBRztBQUNIO0FBQ0EsRUFBRSxNQUFNLE1BQU0sR0FBRztBQUNqQixJQUFJLE1BQU0sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3BCLE1BQU0sSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ2xCLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLE1BQU0sT0FBTztBQUNiLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7QUFDdkIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUM3QyxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN2QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNqQixHQUFHO0FBQ0g7QUFDQSxFQUFFLEVBQUUsR0FBRztBQUNQLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7QUFDMUIsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksR0FBRztBQUNULElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7QUFDMUIsTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuRCxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMzQixJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixHQUFHO0FBQ0g7QUFDQSxFQUFFLE1BQU0sR0FBRztBQUNYLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNwQyxJQUFJLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDN0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RCxJQUFJLElBQUksSUFBSSxD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LEtBQUssQ0FBQyxFQUFFO0FBQzNCLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDMUMsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQy9DLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDdEIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsSUFBSSxHQUFHO0FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzdDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsS0FBSyxHQUFHO0FBQ1YsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzVDLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2xCLEdBQUc7QUFDSDtBQUNBLEVBQUUsaUJBQWlCLEdBQUc7QUFDdEIsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QztBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO0FBQ3BCLE1BQU0sQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFDekIsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDcEIsS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzNGLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekIsS0FBSyxNQUFNO0FBQ1gsTUFBTSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUN4QixNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0EsRUFBRSxTQUFTLEdBQUc7QUFDZCxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFO0FBQzNFLE1BQU0sT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0EsSUFBSSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUMxRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLENBQUM7QUFDL0UsSUFBSSxJ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QztBQUMzQyxJQUFJLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ3ZDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQztBQUN4QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksSUFBSTtBQUNyQixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0FBQzFCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSTtBQUN0QixFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO0FBQzNCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSTtBQUNqQixFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDO0FBQ3BDLEVBQUUsT0FBTyxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRTtBQUN0QyxJQUFJLFFBQVEsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RCxHQUFHLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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
|